我在<video src="http://route/to/video.mp4" width="100%" height="auto" controls="" ></video>
/ Observable
完成后尝试做某事。我正在更改subscribe
方法中的Input
属性,但subscribe( onNext )
永远不会触发。
我应该做些什么?
ngOnChanges
答案 0 :(得分:6)
那是&#34;按照设计&#34;
仅当更改检测更新绑定到ngOnChanges()
时,才会调用 @Input()
。如果从某个地方强制改变输入,那么它就不会被调用。
只要让names
成为每次更新属性时要执行的代码的getter / setter。
答案 1 :(得分:0)
正如Günter所述,根据我的理解,它并不是那么有效......使用Observables时,您可以使用Observable.next()
功能手动触发更改。这里的诀窍是你必须从服务中返回Observable
- 这可以这样做:
import {Observable, Subject} from "rxjs/Rx"; // remember the '/Rx', it got me...
export class NamesService {
private initialNames: Array<string> = ["Joe", "Jack", "Pete"];
get(){
let names: Subject<Array<string>> = new Subject<Array<string>>();
names.next(this.initialNames);
setTimeout(() => {
this.initialNames.push('someOtherNames');
names.next(this.initialNames);
}, 1000);
return names.asObservable();
}
}
然后按照您已经完成的方式订阅它,当.next()
运行时,它将触发.subscribe()
方法的更改。
我建议从get方法中拆分它,你可以拥有自己的onNameUpdate()
方法来返回可观察数组 - 或类似的东西。