ここに投稿された質問には少しバリエーションがあります:Angular2 component view does not update on value change via method2つのAngular 2コンポーネント間の接続が更新されない
modal component
の変数をtoggle buttons component
から切り替える必要がありますが、ビューは更新されません。
トグルボタンをクリックしたときにモーダルビューの更新を行うにはどうすればよいですか?
参照を参照されたい:plunkr
app.ts
//our root app component
import {Component, ViewChild} from 'angular2/core';
import {Modal} from './modal';
import {ToggleButtons} from './togglebuttons';
@Component({
selector: 'my-app',
template: `
<div>
<toggle-buttons></toggle-buttons>
<modal></modal>
</div>
`,
providers: [Modal, ToggleButtons, ],
})
export class App {
constructor() {
}
}
togglebuttons.ts
//our root app component
import {Component} from 'angular2/core';
import {Modal} from './modal';
@Component({
selector: 'toggle-buttons',
template: `
<div>
<button (click)="toggle()">toggle</button>
<button (click)="showActivate()">print</button>
</div>
`
})
export class ToggleButtons {
constructor(private modal: Modal) {
}
showActivate() {
this.modal.showActivate();
}
toggle() {
this.modal.toggleActivate();
}
}
modal.ts
0をexport class Toggle {
constructor(private modal: Modal) {
}
に注入
//our root app component
import {Component, Injectable} from 'angular2/core'
@Component({
selector: 'modal',
template: `
<div>
<h2>Modal: {{activate}}</h2>
</div>
`,
directives: []
})
export class Modal {
activate: true;
constructor() {
this.activate = false;
}
showActivate() {
console.log('Modal:showActivate', this.activate);
}
toggleActivate() {
this.activate = !this.activate;
console.log('Modal:toggleActivate', this.activate);
console.log(this.activate)
}
}
ご返信ありがとうございます。私はあなたのplunkrをチェックアウトしましたが、トグルボタンを押すとビューが更新されません。 URLが正しいのですか、何か不足していますか? –
はい、 'providers'属性は残っていました;-)私は今修正する必要があります。あなたが一見を持つことができたら –
私は申し訳ありませんが、もう一度チェックしましたが、ビューは更新されていません。あなたのplunkrのURLが間違っている可能性はありますか? –