0

我有这个组件。我想在第一次@Input更改时做一些事情。问题是changes.firstChange总是错误的(在初始化和更改之后)。

@Component({
  changeDetection: ChangeDetectionStrategy.OnPush,
  selector: 'test',
  templateUrl: './t.component.html',
  styleUrls: ['./t.component.css']
})
export class TComponent implements OnChanges {

  @Input()
  myValue: string;

  ngOnChanges(changes: SimpleChanges) {
    console.log('myValue:  ', changes.myValue.isFirstChange()); // always false
    console.log('myValue:  ', changes);
  }

}

为了使用它,我正在做:

  myValue = of('1').pipe(
    delay(2000),
    // startWith('2')
   )

我也试过:

  myValue = '1'

<test [myValue]="myValue | async "></test>// 使用时of

正如您在图像中看到的那样changes.firstChange,无论我稍后传递一个字符串还是一个新值,它总是错误的。

这些是输出: 在此处输入图像描述

在此处输入图像描述

这是使用 rxjs 值时的输出:(value changed but never changed firstChange to true

在此处输入图像描述

4

1 回答 1

0

因为那还没有previousValue

于 2020-10-09T13:33:00.083 回答