【问题标题】:Angular 2 access via string literals is disallowed不允许通过字符串文字进行 Angular 2 访问
【发布时间】:2017-02-17 08:02:52
【问题描述】:

我是 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));
    }

【问题讨论】:

  • 问题不在这里。显示您的 getProject 方法。
  • 尝试将params['id'] 更改为params.id?或者,您可以重新配置 TSLint 设置。
  • 是的,它不存在

标签: angular gulp tslint


【解决方案1】:

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

【讨论】:

  • 根本没有帮助
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 2019-08-15
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2017-08-31
    • 1970-01-01
    • 2019-05-03
    相关资源
    最近更新 更多