首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角ngOnChanges法

角ngOnChanges法
EN

Stack Overflow用户
提问于 2018-06-03 11:30:27
回答 1查看 2.2K关注 0票数 0

我是新的角,我一直在学习组件LifeHooks最近,我真的不了解一件事关于ngOnChanges。它是否只在子组件上触发?如果我使用这样的代码: app.component.ts:

代码语言:javascript
复制
@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css'],
    providers: [Logger]
})
export class AppComponent implements OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy {
    title = 'Tour of Heroes';
    heroes = ['Windstorm', 'Bombasto', 'Magneta', 'Tornado'];
    myHero = this.heroes[0];
    hero: string;
    power: string;

模板链接如下:

代码语言:javascript
复制
<input [(ngModel)]="hero" placeholder="Hero name">
<input [(ngModel)]="power" placeholder="Hero power">

 <!--Using [] brackets can set property of COMPONENT or html ELEMENT-->
<app-on-changes [hero]="hero" [power]="power"></app-on-changes>

它触发子ngOnChanges方法,但是当我在子模板中使用输入绑定时,该方法不会被调用。-更改:

代码语言:javascript
复制
<p>
  <input [(ngModel)]="hero" placeholder="Hero name">
  <input [(ngModel)]="power" placeholder="Hero power">

  {{hero}}  {{power}}
</p>

打开-更改。组件。on:

代码语言:javascript
复制
@Component({
    selector: 'app-on-changes',
    templateUrl: './on-changes.component.html',
    styleUrls: ['./on-changes.component.css'],
    providers: [Logger]
})
export class OnChangesComponent implements OnInit, OnChanges {
    @Input() hero: string;
    @Input() power: string;
    constructor(private logger: Logger) {
    }

    ngOnInit() {
    }

    ngOnChanges(changes: SimpleChanges): void {
        this.logger.log('OnChangeComponent changed properties');

        for (let propName in changes) {
            let chng = changes[propName];
            let cur  = JSON.stringify(chng.currentValue);
            let prev = JSON.stringify(chng.previousValue);
            this.logger.log(`${propName}: currentValue = ${cur}, previousValue = ${prev}`);
        }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 11:54:59

当父组件修改(或初始化)绑定到子元素的输入属性的值时,将调用ngOnChanges()。因此,如果组件没有父组件,则不会调用ngOnChanges()。

您正在使用双向绑定更改@Input属性的值,但这不会调用ngOnChanges()。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50665905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档