Это довольно легко с Сервисом, который вы разделяете между вашими Компонентами.
Для экземпляра SidebarService
:
@Injectable()
export class SidebarService {
showSidebar: boolean = true;
toggleSidebar() {
this.showSidebar = !this.showSidebar;
}
}
В компоненте боковой панели просто поставить *ngIf
с showSidebar
переменной из SidebarService
. Также не забудьте добавить службу в конструктор.
@Component({
selector: 'sidebar',
template: `
<div *ngIf="_sidebarService.showSidebar">This is the sidebar</div>
`,
directives: []
})
export class SidebarComponent {
constructor(private _sidebarService: SidebarService) {
}
}
В компоненте, где вы хотите, чтобы справиться с переключая боковой панели также впрыскивать SidebarService
и добавить click
событие с помощью метода обслуживания.
@Component({
selector: 'my-app',
template: `
<div>
<button (click)="_sidebarService.toggleSidebar()">Toggle Sidebar</button>
<sidebar></sidebar>
</div>
`,
directives: [SidebarComponent]
})
export class App {
constructor(private _sidebarService: SidebarService) {
}
}
Не забудьте добавить SidebarService
к поставщикам в вашем файле загрузки:
bootstrap(App, [SidebarService])
Plunker, например, использование
вы должны создать службу для sidebar и bootstrap, затем вставляйте его в любой компонент и изменяйте свойства через s ervice, [здесь почти аналогичная проблема] (http://stackoverflow.com/questions/37069609/show-loading-screen-when-navigating-between-routes-in-angular-2/37070282#37070282) –