ngOnChanges钩子不被执行

来源:6-11 本章实战

和光同尘无为

2017-06-08

form 组件:<app-stars [rating]="stock.rating" [readonly]="true"></app-stars>

star 组件:

import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';

@Component({
  selector: 'app-stars',
  templateUrl: './stars.component.html',
  styleUrls: ['./stars.component.css']
})
export class StarsComponent implements OnInit, OnChanges {

  private stars: Array<boolean>;

  @Input()
  private readonly: boolean;

  @Input()
  private rating: number;

  @Output()
  private ratingChange: EventEmitter<number> = new EventEmitter();

  constructor() {
  }

  ngOnInit() {
  }

  ngOnChanges(changes: SimpleChanges): void {
    this.stars = [];
    for (let i = 1; i <= 5; i++) {
      this.stars.push(i > this.rating);
    }
  }

  clickStar(index: number) {
    if (this.readonly) {
      this.rating = index + 1;
      this.ratingChange.emit(this.rating);
    }
  }


}

还有别的需要注意的地方吗?

写回答

1回答

和光同尘无为

提问者

2017-06-08

问题已经解决原因是 [rating] 没有双向绑定,改成 [(rating)]

0
0

Angular4.0从入门到实战 打造股票管理网站

Angular新特性,教你熟练使用 Angular 和 Typescript 开发组件式单页应用

2683 学习 · 1361 问题

查看课程