我有2個部件一個是Topbar
,第二個是一個Display
這裏,他們是:發送動作父組件Angular2
顯示:
import {Component, View, NgIf} from 'angular2/angular2';
import {Topbar} from '../topbar/topbar';
@Component({
selector: 'display'
})
@View({
templateUrl: './components/display/display.html',
styleUrls: ['./components/display/display.css'],
directives: [Topbar, NgIf]
})
export class Display {
showGrid: boolean;
constructor(){
this.showGrid = true;
}
}
顯示HTML(對於我的問題很重要):
<topbar></topbar>
<div *ng-if="showGrid" class="display-list">
<h1>true</h1>
</div>
<div *ng-if="showGrid == false" class="display-list">
<h1>false</h1>
</div>
正如你可以看到我有一個if語句取決於showGrid
屬性。現在,這裏是我的頂欄組件:
頂欄:
import {Component, View} from 'angular2/angular2';
import {ROUTER_DIRECTIVES} from 'angular2/router';
@Component({
selector: 'topbar'
})
@View({
templateUrl: './components/topbar/topbar.html',
styleUrls: ['./components/topbar/topbar.css'],
directives: [ROUTER_DIRECTIVES]
})
export class Topbar {
toggleGrid(){
// update Display showGrid property
}
}
頂欄HTML:
<div (click)="toggleGrid()" class="col-md-1 no-padding grid-toggle">
<img src="assets/imgs/icons/icon-list.svg">
</div>
正如你可以看到我有一個功能toggleGrid
這個功能是切換Display
財產showGrid
;然而,我似乎無法找到一種方法來完成這件事。由於Topbar
是Display
的指令,我不能將Display
注入Topbar
。我試圖創建一個服務,但這樣做的問題是,它不更新Display
showGrid
財產
你有沒有設計問題?我會把頂欄和顯示爲兄弟並在父組件中使用它們。 –
'Display'是'Topbar'的父母,所以是的,你可以使用'@Host()'注入它 –