我有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()'注入它 –