自定义组件用Injectable()装饰后,双向绑定失效问题!

来源:5-5 双向绑定

Meepo校园联盟

2017-04-05

//场景: 这是一个loading组件,在其他组件内我想直接通过 service方式使用,这里使用了
// Injectable()装饰器
@Injectable()
export class CoreLoadingComponent implements OnInit {
  _msg: string;
  @Input()
  get msg(){
    return this._msg;
  }
  set msg(val: string){
    this._msg = val;
  }
  public show(msg: string){
    this._msg = msg;
  }
}

//然而效果并不是我想要的,现在即使在下面通过调用show函数也无法绑定到下面这个模板上去,
//好郁闷,对于这方面需求应该如何做呢,我想通过服务的方式去调用一些简单的模板相应事件
//
<input [(ngModel)]="_msg">
<h2 class="title">{{_msg}}</h2>

//使用
export class TestIndexComponent implements OnInit {
  constructor(
    public loading: CoreLoadingComponent // 直接注入组件
  ) {}

  ngOnInit() {
    console.log('test loading is',this.loading);
    //完成后动态改变他的值
    //这个时候loading的_msg是
    let i = 0;
    setInterval(()=>{
      let msg = i+'s';
      this.loading.show(msg);
      console.log(this.loading);
      i++;
    },1000);
  }

}

//




写回答

1回答

JoJo

2017-04-05

额...没看明白,你想实现什么效果?

0
3
Meepo校园联盟
就是想通过注入service来动态创建一些component而不再父组件的html和ts中配置控制,直接交给一个 service控制
2017-04-05
共3条回复

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

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

2683 学习 · 1361 问题

查看课程