模板中的Angular2 Init变量。

时间:2016-06-28 07:11:57

标签: typescript angular

当我运行应用程序时,控制台显示我有ngOnInit的所有日志,但应用程序只生成一个框架视图,而不显示组件的变量和来自l18n的文本。 ngOnInit或不正常工作,因为我必须在构造函数中调用。

当我第二次点击组件的链接时,这些问题就会消失,然后一切都按原样加载。这种情况发生在应用程序中的所有组件以及构建在angular2 starter gulp上的所有应用程序中。

为什么只有第二次点击加载要查看的变量并调用ngOnInit(在构造函数中调用它时)?

export class SettingsDevicesComponent implements OnInit {

**variables**

@Component({
  selector: 'as-settings-devices',
  templateUrl: 'app/settings-devices/settings-devices.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
  styleUrls: ['app/settings-devices/settings-devices.component.css'],
  providers: [Communication],
  pipes: [TranslatePipe],
  directives: [REACTIVE_FORM_DIRECTIVES, NgClass, NgStyle, CORE_DIRECTIVES,ROUTER_DIRECTIVES]
})

constructor(private _cm: Communication,
            private _cdRef: ChangeDetectorRef,
            private _router: Router,
            private _sanitizer: DomSanitizationService,
            @Inject(ElementRef) elementRef: ElementRef
            ) {
                this.elementRef = elementRef;
                this.ngOnInit();
                this.fileUpload = new FormGroup({
                    color: this.color
                });
                this.fileName = new FormGroup({
                    fileNameInput: this.fileNameInput
                });
                this.settingsName = new FormGroup({
                    settingsNameInput: this.settingsNameInput
                });
            }

ngOnInit() {
    this.getDeviceData();
    this.getZoneData();
}
}

1 个答案:

答案 0 :(得分:1)

问题是主要组件'app.component.ts'中的changeDetection:ChangeDetectionStrategy.OnPush

这导致了一个问题:

@Component({
  selector: 'as-main-app',
  templateUrl: 'app/app.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
  directives: [ROUTER_DIRECTIVES]
})

删除后一切正常:

@Component({
  selector: 'as-main-app',
  templateUrl: 'app/app.html',
  directives: [ROUTER_DIRECTIVES]
})