Angular 在@Input上使用slice时,组件的Setter调用了两次。角度4

Angular 在@Input上使用slice时,组件的Setter调用了两次。角度4,angular,input,pipe,setter,getter,Angular,Input,Pipe,Setter,Getter,在angular 4上使用双向数据绑定时,将数组传递给其他组件,如下所示: <app-testing [inputArray]="arraySend | slice:0:1"> </app-testing> 组件。ts import {Component} from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', s

在angular 4上使用双向数据绑定时,将数组传递给其他组件,如下所示:

<app-testing [inputArray]="arraySend | slice:0:1"> </app-testing>
组件。ts

import {Component} from '@angular/core';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})

export class AppComponent {
    arraySend = ['send1', 'send2', 'send3', 'send4'];
}
import {Component, Input} from '@angular/core';

@Component({
    selector: 'app-testing',
    templateUrl: './testing.component.html',
    styles: []
})
export class TestingComponent  {

    private _array: any;

    @Input()
    get inputArray(): any {
        return this._array;
    }

    set inputArray(value: any) {
        console.log(value);
        this._array = value;
    }
}
HTML

<app-testing [inputArray]="arraySend"> </app-testing>
<div>
    <ul *ngFor="let i of inputArray ">
        <li>{{i}}</li>
    </ul>
</div>
HTML

<app-testing [inputArray]="arraySend"> </app-testing>
<div>
    <ul *ngFor="let i of inputArray ">
        <li>{{i}}</li>
    </ul>
</div>


  • {{i}
  • 工作正常,但如果我在标记应用程序测试中添加切片管道,如下所示:

    <app-testing [inputArray]="arraySend | slice:0:1"> </app-testing>
    
    
    
    testing.component.ts中的setter方法被调用了两次,我不想它被调用两次


    我真的很感谢你的帮助,提前谢谢你,而不是像塞特那样尝试

      export class TestingComponent  {
                  @Input() private inputArray:  any[] = [];
            }
    
    如果只需要setter,则可以创建函数

    <app-testing [inputArray]="slice(arraySend)"> </app-testing>
    
    slice(arraySend){
    return arraySend.slice(0,1)}
    
    
    切片(排列结束){
    返回arraySend.slice(0,1)}
    
    尝试使用函数[inputArray]=“切片(arraySend)”,而不是管道。