我有一個我想從另一個組件打開的sidenav。我爲此創建了一個服務,因爲它不是父/子關係,但我始終將導航返回爲未定義狀態。我究竟做錯了什麼?Angular 2:從不同的組件切換sidenav
這是服務:
import {Injectable} from '@angular/core';
import {MdSidenav, MdSidenavToggleResult} from "@angular/material";
@Injectable()
export class SidenavService {
private sidenav: MdSidenav;
public setSidenav(sidenav: MdSidenav) {
this.sidenav = sidenav;
}
public open(): Promise<MdSidenavToggleResult> {
return this.sidenav.open();
}
public toggle(isOpen?: boolean): Promise<MdSidenavToggleResult> {
return this.sidenav.toggle(isOpen);
}
constructor() {
}
}
這與sidenav InstellingenComponent的HTML(我刪除了一些內容,因此它更具可讀性):
<md-sidenav #sidenav align="end" mode="side" opened="true">
<div>
<h3>Weergave aanpasssen</h3>
<section class="instellingen">
<h3>Kleuren</h3>
</form>
</section>
</div>
</md-sidenav>
在另一部分,我有:
export class AppComponent implements OnInit {
constructor(private sidenavService: SidenavService) {
}
ngOnInit(): void {
}
public toggleSidenav() {
this.sidenavService
.toggle()
.then(() => {
});
} }
和下面的HTML:
<button md-icon-button (click)="toggleSidenav()" class="button">
<md-icon>settings</md-icon></button>
您是否使用'setSidenav'函數設置了對側導航的引用?如果是這樣,你能請張貼那部分代碼嗎? – CodeWarrior
您可以發佈InstellingenComponent.ts文件的內容嗎? – CodeWarrior
嗯..我沒有任何與InstellingenComponent.ts有關的東西...我忘記了什麼嗎? –