【发布时间】:2017-08-26 19:22:03
【问题描述】:
问题是传递给子视图的属性变成了undefined:
父组件:
@Component({
selector: 'app-searchbox',
template: `
<app-artifact-list [artifacts]="searchResults"></app-artifact-list>
`
})
export class SearchboxComponent implements OnInit {
// explicitly initialize the property
// the same effect with constructor initialization
searchResults: Artifact[] = [new Artifact()];
constructor(private artifactService: ArtifactService) {
}
ngOnInit(): void {
this.pollService(this.artifactService.findByQuery('guice'));
}
private pollService(request: Observable<Artifact[]>) {
return request.subscribe(this.fillInResults);
}
private fillInResults(result: Artifact[]) {
result.forEach(console.log);
for (let obj of result) {
// this.searchResults is undefined! why?
this.searchResults.push(obj);
}
}
}
子组件:
@Component({
selector: 'app-artifact-list',
template: `
<h1>{{_artifacts | json}}</h1>
`
})
export class ArtifactListComponent implements OnChanges {
private _artifacts: Artifact[] = [];
ngOnChanges(changes: SimpleChanges): void {
console.log('Property changed');
}
@Input()
set artifacts(artifacts: Artifact[]) {
console.error('Property changed');
this._artifacts = artifacts;
}
}
在构造函数调用期间,我看到该属性已正确初始化,但在回调方法中它变为undefined。
这不是和this有某种关系吗?也许this.searchResults 指的是回调中的其他任何内容?
【问题讨论】:
标签: javascript angularjs angular typescript binding