ngOnChanges Angular 2不';不要分配不同的值

ngOnChanges Angular 2不';不要分配不同的值,angular,angular2-template,two-way-binding,Angular,Angular2 Template,Two Way Binding,我有一个公共值cursorUrl和一个方法,该方法检查url是否存在,如果存在,则分配urlCursor='pointer',如果不存在,则分配urlCursor='text' 该方法似乎工作得很好,但是它将每个项分配给urlCursor='pointer',即使控制台日志显示它应该是 pointer text text text 这是我的方法: ngOnChanges(changes: any) { let index = 0; this.urlCursor =

我有一个公共值
cursorUrl
和一个方法,该方法检查url是否存在,如果存在,则分配
urlCursor='pointer'
,如果不存在,则分配
urlCursor='text'

该方法似乎工作得很好,但是它将每个项分配给
urlCursor='pointer'
,即使控制台日志显示它应该是

pointer
text
text
text
这是我的方法:

ngOnChanges(changes: any) {
    let index = 0;
    this.urlCursor = 
        this.checkUrl(changes.items.currentValue[0].redirectionViewUrl);
    index++; 
    console.log(this.urlCursor);
}
这是html:

<div class="items" #item(window:resize)="itemResizeHandler();" >
    <app-item
        *ngFor="let item of items"
        class="item-element"
        [ngStyle]="{'cursor': urlCursor}"
        [dataMode]="item.dataMode"
        [redirectionViewUrl]="item.redirectionViewUrl"
    ></app-item>
</div>


有人知道为什么不能正确绑定吗?

绑定工作正常。您的
urlCursor
不是一个变量数组,而是一个变量,因此最后分配给它的任何变量都将用于所有值。尝试修改ts文件中的代码,如:

public urlCursor: string[] = []
...
ngOnChanges(changes: any) {
    ...
    this.urlCursor = []; 
    this.urlCursor.push(
      this.checkUrl(changes.items.currentValue[0].redirectionViewUrl)
    );
    ...
}
和htlm类似:

<app-item
  *ngFor="let item of items; let ind=index"
   class="item-element"
   [ngStyle]="{'cursor': urlCursor[ind]}"
   [dataMode]="item.dataMode"
   [redirectionViewUrl]="item.redirectionViewUrl"
></app-item>

请共享“itemResizeHandler”和“checkUrl”的代码。