Angular 9를 사용하고 템플릿에서 사용하는 변수를 수정합니다. 하지만 안타깝게도 템플릿이 업데이트되지 않습니다. 누구나 Angular에게 내 구성 요소의 내용이 변경되었음을 알리는 일반적인 접근 방식을 설명 할 수 있습니까?
projects: any[] = [];
ngAfterViewInit(): void {
this.actRoute.params.subscribe((params) => {
this.electronService.foo.bar(
.then((x) => {
var history = x.y();
history.on("begin", () => {
this.projects.push('foo');
});
history.execute();
});
});
}
foo.component.html
<ul>
<li *ngFor="let project of projects;">{{project}}</li>
</ul>
Angular는 "in memory"변수를 변경하지 않으면 변경 사항을 감지하지 않습니다. 귀하의 경우 동일한 변수를 푸시하는 것만으로는 변경 감지가 트리거되지 않습니다. this.projects = this.projects.slice()
메모리 변수를 변경하고 변경을 트리거하려면 또는 이와 비슷한 방식을 사용해야합니다 . 그것이 당신을 적합하지 않는 경우가 주입처럼 사용할 수있는 다른 일이 있습니다 ChangeDetector
다음 호출은ChangeDetector.detectChanges();
constructor(private cd: ChangeDetectorRef) {}
...
this.projects.push('foo');
this.cd.detectChanges();
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다