【问题标题】:How to clear last @Input variable values ? Angular 2+如何清除最后一个@Input 变量值?角 2+
【发布时间】:2021-06-03 16:12:25
【问题描述】:

我使用 changeDetection 策略,它工作正常,但是当我回来时我的组件被破坏时,我保存了最后一个值。

示例我向子组件提供 3 个值,然后当我再次尝试支持数据时转到另一个组件,我看到了我的最后一个值..

示例道具值 1 、 2 和 3。 我看到了我的最后一个值 3。 如何摧毁它?

检查代码和父组件:

  <div class="row"> 
   <app-poi-address [poiPin]="pinedAddress"></app-poi-address>
  </div>
 this.pinedAddress = $event;

子组件:

@Component({ 
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class PoiAddressComponent implements OnInit, OnChanges {
  @Input () poiPin!: Object
  public allPin: any[] = [];
  constructor() { }

  ngOnInit(): void {
    console.log('datica' , this.poiPin);
  }

  ngOnChanges(): void {
    console.log('HelloComponent: Change Detection count = ' , this.poiPin);
    this.allPin.push(this.poiPin)
  }

}


<div *ngFor="let d of allPin  ">
    <p> {{  d?.coords?.lat }} </p>
</div>

保存的最后一个值。我想清除 allPin 的所有数组...

【问题讨论】:

  • 你可以在 ngOnInit 中初始化它
  • 什么?我需要 ngOnChange 因为我推动点击项目...?我不明白你在说什么?
  • PoiAddressComponent 的父级是否也被破坏了?如果没有,则父级保留 pinedAddress 的最后一个值,下次 PoiAddressComponent 再次重新创建最后一个 pinedAddress 传递给 PoiAddressComponent 时,您将获得最后一个值“3”。
  • 请不要破坏您的帖子。
  • 我需要不用担心

标签: javascript html css angular


【解决方案1】:

这将在销毁后重新创建组件时清除所有 pin 变量。

 ngOnInit(): void {
     allPin = [];
     console.log('datica' , this.poiPin);   
}

【讨论】:

  • 啊按钮错误,应该是代码格式化。谢谢!
猜你喜欢
  • 2023-04-10
  • 2018-08-29
  • 2013-08-13
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 2022-11-01
  • 2016-12-04
相关资源
最近更新 更多