当前位置: 首页 > 知识库问答 >
问题:

角度2:父值更改时更新@Input属性

宋昊然
2023-03-14

我有一个父组件和子组件,其中父组件通过@Input修饰符将对象传递给子组件。问题是,子级只获取父级数据一次,然后在将来更改传递给子级的父属性后,不会更新该值。

共有3个答案

周兴朝
2023-03-14

如果要从父组件获取更新值,则需要添加changeDetection:changeDetection策略。子组件中的OnPush

注意:OnPush通过比较组件输入的引用来工作

@Component({
  selector: 'abc',
  templateUrl: 'component.html',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class childComponent {
   //below get updated value every time value changes in parent  
   @Input() inputFromParent: string;
}

在父组件中,使用子组件abc

 <abc [inputFromParent]="passdata"></abc>

在父ts中this.inputFromParent = newData//在首次初始化后完成

现在,如果您更改passdata的值,那么它也将更改子组件属性中的值。

Ref:了解Angular中的变化检测策略

宗政文彬
2023-03-14

当整个引用更新时,数据将被更新。如果您只是更新该对象内的一些属性,它不会被触发。您需要更改传递对象的引用。

示例

<child [data]="myData"></child>

如果您将更新myData.name="Test",它将不会被触发。您需要做一些事情

this.myData = changedData;

解决方法是使用 DoCheck 生命周期挂钩并尝试手动检查属性更改。但通常更改引用会更方便。

徐涵亮
2023-03-14

在父组件更改时,也在子组件中进行更改

以下是如何使用 OnChanges 接口来检测组件中的更改

父组件中.html

<app-child [child_name]="name"></app-child>

在child.component.ts中

export class ChildComponent implements OnChanges {

  @Input('child_name') name: string
  text: string
  constructor() { }

  // on every change of @input 'name', this method will be triggered
  ngOnChanges() {
    this.text = 'Hi ' + this.name
  }

}
 类似资料:
  • 使用Angular 2更改值时,如何调用方法? 我尝试使用ng change,但没有成功。

  • 问题内容: 我有一个初始化的角度指令,如下所示: 我希望它足够聪明,可以在更改时刷新指令,因为这意味着它应该显示完全不同的内容。 我已经对其进行了测试,但没有任何反应,更改时甚至没有调用链接函数。有没有办法做到这一点? 问题答案: 链接函数仅被调用一次,因此不会直接执行您期望的操作。您需要使用angular 来观看模型变量。 该手表需要在链接功能中设置。 如果您将隔离范围用于指令,则范围将是 在链

  • 我有一个带有的组件和一个方法。 登录完成后,如何更新组件并再次执行Ngonit方法? 服务:

  • 我的组件具有以下功能: 我可以在我的html页面中插入选择菜单,但更改事件不会在我选择项目时触发。有人能让我知道为什么会发生这种情况吗? 谢谢

  • 我对JS的反应有点陌生。我有两个问题。我来了 现在我要做的是,当应用程序组件挂载时,我生成一个对后端服务器的ajax调用,当它返回时,它更新道具,并设置状态,这样子组件也会重新呈现,但子组件不会重新呈现。谁能告诉我出了什么问题。 问题2 现在让我们假设我将进入组件二路由,它将呈现组件二,我在应用程序组件中生成一个ajax调用,根据ajax调用返回的数据,我在应用程序组件中设置了一些道具,我还希望组

  • 问题内容: 我在SQL Server中运行合并。在我的更新中,我只想更新值已更改的行。版本行在每次更新时都会递增。下面是一个示例: 现在,如果我只想更新行,从而增加版本,则仅在名称更改的情况下。 问题答案: 可以有。另外,无需更新。 如果Last_Name或First_Name可为空,则例如在比较trg.Last_Name <> src.Last_Name时,需要注意值。