不允许通过字符串文字进行Angular 2访问

时间:2016-10-08 12:11:15

标签: angular gulp tslint

我是AngularJS 2的新手,这是我第一次尝试用TSlint编译它。我做了Tour of Heroes教程,并且有一个类似下面的部分,TSlint不想编译说object access via string literals is disallowed.

ngOnInit(): void {
    this.route.params.forEach((params: Params) => {
      let id = +params['id'];
      this.projectService.getProject(id)
        .then(project => this.project = project);
    });
  }

我不确定我是否理解这个问题,如果要解决它我就会迷失方向。你能帮帮我吗?

我的其他代码

    getProjects(): Promise<Project[]> {
      return this.http.get(`${this.configuration.Server}projects${this.configuration.ApiUrl}`)
                    .toPromise()
                    .then(response => response.json())
                    .catch(this.handleError);
  }

    getProject(ident: number): Promise<Project> {
      return this.getProjects()
             .then(projects => projects.find(project => project.id === id));
    }

2 个答案:

答案 0 :(得分:2)

我会摆脱这条规则。有时需要通过字符串访问属性。如果您查看tslint.json文件,则应该看到属性"no-string-literal"。只需将其更改为false。

如果您想保留规则,那么对于此特定情况,您只需键入params即可拥有id。您可以这样做,因为Params type只是{[key: string]: any}

route.params.subscribe((params: {id: string}) =>{
  let id = +params.id;
})

答案 1 :(得分:0)

可以通过为变量分配字符串文字来修复它。并在[]中使用它。请参阅此link,它有多种方法可以解决此问题。