本机脚本-我的组件中不存在ChangeDetectorRef

时间:2018-12-11 21:44:44

标签: angular typescript nativescript angular2-changedetection

我尝试自动更新Listview中使用的数组。为此,我像这样使用ChangeDetectorRef:

import { Component, OnInit, ChangeDetectionStrategy, Input, ChangeDetectorRef } from "@angular/core";

@Component({
    selector: "register",
    templateUrl: "./register.html",
    styleUrls: ["./register.css"],
    changeDetection: ChangeDetectionStrategy.OnPush
})

export class RegisterComponent implements OnInit {

@Input regis = Array<string>;

constructor(cdr: ChangeDetectorRef){}

ngAfterContentChecked() {
    this.cdr.detectChanges();
}

但是,出现此错误:

  

错误TS2339:类型'RegisterComponent'上不存在属性'cdr'。

有人可以解释我被我误解了吗?

2 个答案:

答案 0 :(得分:1)

在构造函数中,您只是在接受参数。如果希望这是简短的属性定义,则必须积极提供可见性。

constructor(public cdr: ChangeDetectorRef){}
constructor(protected cdr: ChangeDetectorRef){}
constructor(private cdr: ChangeDetectorRef){}

否则,cdr仅在构造函数内部可用。

答案 1 :(得分:1)

在添加诸如public / private之类的访问器之前,它是构造函数中的局部变量。

import { Component, OnInit, ChangeDetectionStrategy, Input, ChangeDetectorRef } from "@angular/core";

@Component({
    selector: "register",
    templateUrl: "./register.html",
    styleUrls: ["./register.css"],
    changeDetection: ChangeDetectionStrategy.OnPush
})

export class RegisterComponent implements OnInit {

@Input regis = Array<string>;

constructor(private cdr: ChangeDetectorRef){}

ngAfterContentChecked() {
    this.cdr.detectChanges();
}