0
router-outlet
을 캡슐화하는 간단한 구성 요소가 있습니다. 이벤트를 발생시키는 간단한 서비스를 설정했습니다. 이 이벤트는 구성 요소 및 업데이트 변수에 의해 캡처 된 다음 [보기]에서 [클래스]를 업데이트합니다.Angular2 : 변수가 변경되면보기가 업데이트되지 않습니다.
Sidebar.component.ts
import { Component, OnInit } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import { SidebarService } from '../sidebar.service';
import { Subscription } from 'rxjs/Subscription';
@Component({
moduleId: module.id,
selector: 'app-sidebar',
templateUrl: 'sidebar.component.html',
styleUrls: ['sidebar.component.css'],
directives: [ROUTER_DIRECTIVES]
})
export class SidebarComponent implements OnInit {
showSidebar:boolean = false;
subscription:Subscription;
constructor(public sidebarService: SidebarService) {
this.subscription = this.sidebarService.sidebarEvent$.subscribe(this.toggleSidebar);
}
ngOnInit() {
}
toggleSidebar (state) {
console.log(state);
this.showSidebar = state;
}
}
sidebar.service.ts 나는이 시도
import { Injectable, EventEmitter } from '@angular/core';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
@Injectable()
export class SidebarService {
private _sidebarEventSource = new BehaviorSubject<boolean>(false);
sidebarEvent$ = this._sidebarEventSource.asObservable();
constructor() { }
open() {
this._sidebarEventSource.next(true);
}
close() {
this._sidebarEventSource.next(false);
}
}
:
Angular2: view is not updated from inside a subscription.
Error: ORIGINAL EXCEPTION: TypeError: Cannot read property 'run' of undefined
저는 ng-cli
을 사용하여 내 앱을 비계했습니다.
말할 필요도없이, 나는 angular2에 완전히 익숙하지 않았으며 ng1에 배경이있었습니다. 그래서 이런 코딩 스타일은 나에게 새로운 세계를 보여줍니다.
그리고 btw, 들러 주셔서 감사합니다. :)
고마워요. 그것은 효과가 있었다. 그러나 이전에 기능이 호출되고 콘솔 출력이오고 있었던 이유를 설명 할 수 있습니까? 그러나보기가 업데이트되지 않았습니까? – ankitjain11
이전 코드로 콘솔을 다시 확인하십시오. 매번 바뀌지 않는 것 같아요. – micronyks