Nativescript - ChangeDetectorRef не существует в моем компоненте - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь автоматически обновить массив, используемый в 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: Свойство 'cdr' не существует для типа 'RegisterComponent'.

Может ли кто-нибудь объяснить мне, что я неправильно понял?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Это локальная переменная внутри конструктора, пока вы не добавите метод доступа, например 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();
}
0 голосов
/ 12 декабря 2018

В вашем конструкторе вы просто принимаете параметр.Если вы хотите, чтобы это было кратким определением свойства, вы должны активно обеспечить видимость.

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

В противном случае cdr доступно только в самом конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...