TSLint无法识别订阅方法内部的数组更新

时间:2018-09-18 12:30:48

标签: angular warnings tslint

在我的Angular项目中,编写以下代码时,我从TSLint收到不匹配的查询和集合更新错误:

export class SomeComponent implements OnInit {
    private wishes: Wish[];

    constructor(private service: Service) {}

    ngOnInit() {
        this.service.subscribe(wishes => {
            this.wishes = wishes;
        }
    }

我得到了查询集合'wishes'的内容,但从未更新(我在代码中对其进行了进一步查询)。但是,我不明白为什么会收到错误消息,因为每次收到订阅的请求时都会更新集合。它与subscribe块中发生的更新有关吗? 预先感谢。

1 个答案:

答案 0 :(得分:1)

删除私人用户。如果您在全局变量中使用private且没有getter和setter方法,则不是好习惯。

export class SomeComponent implements OnInit {
    wishes: Wish[];

    constructor(private service: Service) {}

    ngOnInit() {
        this.service.subscribe(wishes => {
            this.wishes = wishes;
        }
    }
}

使用吸气剂和吸气剂:

    export class SomeComponent implements OnInit {
        private wishes: Wish[];

        constructor(private service: Service) {}

        ngOnInit() {
            this.service.subscribe(wishes => {
                setWishes(wishes);
            }
        }

       getWishes(): Wish[] {
         return this.wishes;
       }

       setWishes(wishes: Wish[]) {
         this.wishes = wishes;
       }
    }

取决于运行的服务器,使用私有服务器可能会给您带来产品问题,因此我会坚持第一种解决方案。

您可以运行ng build --prod来测试产品代码