Tôi gặp vấn đề với đăng ký không thể kích hoạt được.Hình ảnh 2 đăng ký có thể quan sát được không kích hoạt
Tôi có một bố trí sử dụng phía nav bố trí chỉ thị tìm kiếm như thế này:
<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>
Những gì tôi cần phải làm là mở nav phía từ các thành phần mà router-ổ cắm đang hiển thị.
Một trong những thành phần có thể trông như thế này:
@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");
}
}
Tôi đã tạo ra một dịch vụ mà trả về một thể quan sát được như thế này:
@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);
}
}
Cuối cùng mã cho các tầng lớp phụ huynh (thuộc với bố cục nav bên HTML):
@Component({
providers: [MdSidenav, SidenavService],
directives: [ROUTER_DIRECTIVES, MD_SIDENAV_DIRECTIVES, MD_BUTTON_DIRECTIVES],
selector: "app",
templateUrl: "app.html",
styleUrls: ["./app.scss"],
})
export class App {
subscription: Subscription;
constructor(private sidenavService: SidenavService, private sidenav: MdSidenav) {
this.subscription = sidenavService.getSidenavObs().subscribe(status => {
console.log("state change");
sidenav.open();
}, error => {
console.log(error);
},() => {
console.log("completed");
});
}
}
Bây giờ vấn đề của tôi là đăng ký thành phần ứng dụng không kích hoạt, tuy nhiên, đăng ký trong thành phần Trang chủ (đó là những gì màn hình bộ định tuyến xuất hiện) được kích hoạt như mong đợi.
Tôi có thiếu gì đó ở đây không?
tôi theo hướng dẫn này: https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service
Cảm ơn rất nhiều! Điều này giải quyết được vấn đề của tôi. – mda144
Cảm ơn Michael! – Leibniz
Cảm ơn Michael !! Bạn đã cứu tôi – bews99