【发布时间】:2017-06-10 18:33:32
【问题描述】:
我有一个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函数设置对侧导航的引用?如果是这样,您能否发布这部分代码? -
你能把
InstellingenComponent.ts文件的内容贴出来吗? -
hmmm..我在 InstellingenComponent.ts 中没有任何相关内容...我忘记了什么吗?
-
sidenav 服务需要对应用程序中的侧导航的引用,以便它可以打开/关闭它。 InstellingenComponent 组件需要这样做,因为这是具有 sidenav 的组件。请参考我的回答,看看是否能解决您的问题。
标签: angular material-design angular2-services