AngularJS 2中的组件和子组件不同步

时间:2016-08-18 14:01:34

标签: angular typescript

我在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;。 组件可以很好地解析父对象,但组件总是呈现根概念的值。完全相同的子组件在循环中工作得很好,但不在循环之外。

我做错了什么?

0 个答案:

没有答案