Я изучаю Angular 2 и довольно новичок в этом, сегодня я пытаюсь поиграть с EventEmitter в angular 2, позволяя компонентам передавать данные. Что я хочу сделать, так это событие click, вызвать метод службы, который возвращает обещание. Затем я хочу передать результаты обратно родительскому компоненту. У меня есть компонент с событием щелчка на кнопке, который вызывает введенную службу, которая возвращает данные в форме обещания, но внутри «тогда» я пытаюсь передать данные обратно, но мой EventEmitter не определен.
Если я вызываю emit за пределами then, он работает нормально, мне не хватает какой-то привязки к родительской области? или Promise не подходит для использования здесь, и это должна быть подписка? любая помощь будет оценена.
Вот код компонента
import { Component, Output, Input, Injectable, EventEmitter } from '@angular/core';
import { Search } from '../Shared/models/search';
import { SearchResult } from '../Shared/models/searchResult';
import { SearchService } from '../Service/search.service';
@Component({
selector: 'search',
template: `<div class="col-sm-12">
<div class="input-group">
<input [(ngModel)]="search.searchText" class="form-control" placeholder="Search">
<span class="input-group-btn">
<button type="button" class="btn btn-default" (click)="searchFor()" >Go!</button>
</span>
</div>
</div>`
})
@Injectable()
export class SearchComponent {
constructor(private searchService: SearchService) { }
@Input() search: Search
@Output() errorMessage: string;
@Output() onSearchChange = new EventEmitter<SearchResult[]>();
searchFor() {
this.searchService.search(this.search).then(function (results) {
console.log("Value");
console.log(results);
this.onSearchChange.emit(results);
});
}
}
}
function(results)
наresults =>
- person AJT82   schedule 15.05.2017this
из внешней области. Вы можете легко проверить это, используяconsole.log(this)
внутриthen
для двух опций (function
и=>
), чтобы увидеть, какую область действия имеетthis
:) - person AJT82   schedule 15.05.2017