[英]How to know Event emitted value has been changed in Angular 4?
我正在開發Angular 4應用程序。 我有一個搜索組件,用戶可以在其中輸入字符串。 每當用戶輸入值並將其提交時,我就將值從SearchComponent
發射到DisplayComponent
。
在SearchComponent中發射值
@Output() userInput: EventEmitter<string> = new EventEmitter<string>();
onFormSubmit() {
this.userInput.emit(this.searchForm.value.SearchInputValue);
}
DisplayComponent HTML看起來像
<app-search (userInput)="valueFromSearch"></app-search>
<div class="some-other-html></div>
DisplayComponent TS文件看起來像
valueFromSearch: string;
constructor(private someService: SomeService) {}
ngOnInit() {
this.someService.getSomeData(valueFromSearch)
.subscribe((data) => {console.log("Success! data is ",data)},
(error) => {console.log("Something went wrong", error)})
}
但是,每當valueFromSearch
更改時,如何運行someService
函數? 我應該使用BehaviorSubject來繼續監聽valueFromSearch
的更改嗎?
是否有任何函數可以知道該值已更改? 請幫我解決這個問題。
您可以使valueFromSearch()方法成為每次您從搜索中發出時都會調用的方法
DisplayComponent HTML
<app-search (userInput)="valueFromSearch(value)"></app-search>
<div class="some-other-html></div>
DisplayComponent TS文件
constructor(private someService: SomeService) {}
valueFromSearch(value: string) {
this.someService.getSomeData(value)
.subscribe((data) => {console.log("Success! data is ",data)},
(error) => {console.log("Something went wrong", error)})
}
ngOnChanges(changes: any) {
let data = changes.valueFromSearch.currentValue;
// This only work with a change not if it has the same value.
}
不知道@JayDeeEss的方法是否可以立即使用,但是對其稍加修改肯定是可行的。
像他的建議一樣,使valueFromSearch
一個方法 (從您的組件中刪除此聲明: valueFromSearch: string;
從userInput
EventEmitter
發出新值時都被調用。
DisplayComponent HTML(注意傳遞給
valueFromSearch()
的參數的更改;從(value)
到($event)
)
<app-search (userInput)="valueFromSearch($event)"></app-search>
<div class="some-other-html></div>
DisplayComponent TS文件(在組件內部,參數名稱無關緊要)
valueFromSearch(value: string) {
// handle the changed 'value' based on required logic
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.