В моем угловом проекте у меня есть два отдельных компонента.
parent.component.ts
mypromise = this.httpClient.get<any>('http://localhost').toPromise()
parent.component.html
<app-children #child [promise]="mypromise"></app-children>
<button (click)="child.update()">Update now!</button>
child.component.ts
@Input promise: Promise<any>
ngOnInit(){
this.getMyPromise()
//results:
//[{id: 1, text: 'abc'}, {id: 2, text: 'abcd'}]
}
update(){
this.getMyPromise()
//expected:
//[{id: 1, text: 'abc'}, {id: 2, text: 'abcd'}, {id: 3, text: 'new data'}]
//results:
//[{id: 1, text: 'abc'}, {id: 2, text: 'abcd'}]
//same outdated results of first call
}
getMyPromise(){
this.promise
.then(data=>console.log(data)) //here i log my results in console
.catch(e=>console.log(e))
}
Когда мой компонент запускается, обещание обычно разрешается с моим контентом, но если я вызываю свое обещаниеснова используя функцию update
в кнопке Update now!
, после обновления моих данных в бэкенде обещание вернет те же результаты первого вызова в ngOnInit()
Как я могу вызвать обновленные данные в своем бэкэнде, используяэто же обещание? Это возможно?