小编mda*_*144的帖子

Angular 2可观察订阅不会触发

我有一个订阅可观察不触发的问题.

我有一个使用侧面导航布局指令的布局,如下所示:

<md-sidenav-layout class="nav-bar">


    <md-sidenav #start>
        <nav>
            <a [routerLink]="['/home']">Home</a>
        </nav> 
        <button md-button (click)="start.close()">Close</button>
    </md-sidenav>

    <router-outlet></router-outlet>

</md-sidenav-layout>
Run Code Online (Sandbox Code Playgroud)

我需要做的是从路由器插座显示的组件打开侧面导航.

一个这样的组件可能如下所示:

@Component({

    providers: [SidenavService, MdIconRegistry],
    directives: [MdIcon],
    templateUrl: `<md-icon (click)="toggleSidenav()">menu</md-icon>`,
    styleUrls: ["./home.component.scss"]
})

export class Home {

    myColor: string;

    constructor(private sidenavService: SidenavService) {
        this.myColor = "primary";

        this.sidenavService.getSidenavObs().subscribe(state => {console.log("state change")});
    }


    toggleSidenav() {

        this.sidenavService.toggleSidenav("open");
    }

}
Run Code Online (Sandbox Code Playgroud)

我创建了一个返回如下observable的服务:

@Injectable()
export class SidenavService {

    private toggle = new Subject<string>();
    private toggleObs = this.toggle.asObservable();

    getSidenavObs() {
        return this.toggleObs;
    }

    toggleSidenav(state: string) {
        this.toggle.next(state);
    }

}
Run Code Online (Sandbox Code Playgroud)

最后是父类的代码(属于侧面导航布局HTML): …

rxjs angular

22
推荐指数
1
解决办法
2万
查看次数

标签 统计

angular ×1

rxjs ×1