我正在開發一個Angular2應用程序,其中有一個ConfigurationService
和一個組件,需要註冊此服務的屬性更改。Angular 2更新服務更新UI
import {Injectable} from "angular2/src/core/di/decorators";
@Injectable()
export class ConfigurationService {
private config = {
showDeveloperOptions: false
}
constructor() {}
get isDeveloper() {
return this.config.showDeveloperOptions;
}
public setDeveloperOptions(developerOptions: boolean) {
this.config.showDeveloperOptions = developerOptions;
console.warn("Set DeveloperOptions to " + this.config.showDeveloperOptions);
}
}
我的視圖組件:
@Component({
selector: 'developer',
template: `<div [hidden]="config.isDeveloper">Not a Developer</div>`,
providers: [ConfigurationService],
})
export class DeveloperComponent {
constructor(public config: ConfigurationService) {
}
}
不幸的是,當我觸發ConfigurationService.setDeveloperOptions(true)
從那裏這項服務得到了注入另一個服務,它不更新視圖。
我在做什麼錯?
非常感謝!
Seb
您如何將價值觀融入您的觀點? –
[hidden] =「config.isDeveloper」,config在組件構造函數中設置爲公共可訪問變量。 – Sebastian
我可能是錯的,但我看到配置作爲私人成員,並沒有在構造函數?我知道你正在訪問那個getter,因爲它會發生什麼,如果你只是聲明var爲public並直接綁定它(不使用getter)? –