我在AngularJS 2(使用Typescript)中有一个组件和子组件,它表现出非常令人费解的行为。我正在寻找的显示是这样的:
对象对象名称
最多父母姓名(123)(123)
- 儿童1姓名(234)
- 儿童2名称(235)
- 儿童3姓名(236)
我得到的是:
对象对象名称
向上根名称(001)(123)
- 儿童1姓名(234)
- 儿童2名称(235)
- 儿童3姓名(236)
以下是详细信息:
父母在其模板中有类似的内容:
<div *ngIf="obj">
Object {{obj.name}}
<a (click)="setTag(obj.parent)">
Up to <display [tag]="obj.parent"></display> ({{obj.parent}})
</a>
<div *ngIf="obj.children.length>0">
<ul>
<li *ngFor="let child of obj.children">
<display [tag]="child"></display>
</li>
</ul>
</div>
</div>
SomeClass
看起来像:
export class SomeClass {
tag: string;
name: string;
parent: string;
children: string[];
}
其中父组件类看起来像这样:
obj: SomeClass
setTag(tag) {
this.tag = tag
setObj()
}
setObj() {
this.objectService.getObject(this.tag)
.then(obj => this.obj = obj)
}
setRoot() {
this.objectService.getRoot()
.then(obj => {
this.obj = obj;
this.tag = obj.tag;
})
}
ngOnInit() {
if (this.tag) {
setTag(this.tag)
} else {
setRoot()
}
}
,子组件模板如下所示:
<span *ngIf="obj">{{obj.name}} ({{obj.tag}})</span>
并且子组件类包含:
tag: string;
obj: SomeClass;
ngOnInit() {
this.objectService.getObject(this.tag)
.then(obj => this.obj = obj)
}
将根标记为&#34; 001&#34;,名称字段为&#34; Root&#34;,当前obj的标记为&#34; 123&#34;,则父模板的输出类似于&#34; Up to Root(001)(123)&#34;。 父组件可以很好地解析父对象,但子组件总是呈现根概念的值。完全相同的子组件在循环中工作得很好,但不在循环之外。
我做错了什么?