【问题标题】:How to Update a DOM without refreshing full page on Component property changes如何在不刷新组件属性更改的整个页面的情况下更新 DOM
【发布时间】:2019-08-29 15:16:07
【问题描述】:

我的页面结构是:

<app-header></app-header>
<personal-information></personal-information>
<address></address>  // multiple address for loop
<app-footer></app-footer>

我有一个 JSON 包含个人信息和多个地址,其中包含公共字段“名称”。

如何在更改一个组件的“名称”字段时更新/刷新所有地址组件,而不刷新整个页面?

【问题讨论】:

    标签: angular angular-components angular-event-emitter


    【解决方案1】:

    您可以使用 Angular 中的双向数据绑定来实现它。随着双向属性值的变化,它会更新DOM中组件各自模板的值。

    demo.component.html
           <app-header [name]="model.name"></app-header>
           <personal-information ></personal-information>
           <address [name]="model.name"></address>  // multiple address for loop
           <app-footer [name]="model.name"></app-footer>
    
    demo.component.ts
    
           demoFn(){
               model.name="Joe"
           }
    

    名称值“Joe”将传递给所有组件,您必须使用@Input() 接受所有组件中的属性名称。

    个人信息.component.ts

              @Input() name:string;
    

    个人信息.component.html

            <input [(ngModel)]="name" />
    

    现在,因为将更改个人信息组件中的值,它会将其传递给所有组件,如果正在使用,它将在 DOM 中更新。

    【讨论】:

    • 我在地址组件本身中有“名称”字段,在更改一个地址时如何更新所有其他地址。
    • 在地址组件中的任何单个名称输入发生变化时,我们是否需要更新所有地址组件名称输入?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2018-02-13
    • 1970-01-01
    • 2011-06-15
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多