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

标签 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));
    }

最佳答案

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

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

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

关于不允许通过字符串文字进行 Angular 2 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932189/

相关文章:

angular - 如何离线使用 Angular Material 2 文档?

angular - MatAutocomplete 值 X 显示

node.js - 在 Docker 容器内或外部运行 Grunt/Gulp?

node.js - 将异步函数的输出传递给 gulp.dest?

typescript 错误 : foo is declared but its value is never read. TS6133

angular - 异步管道不应被否定

angular - 如何在 Angular 组件中拥有变量 h1..h6 元素?

javascript - 如何使用shell在gulp中读取?

typescript - TsLint: '$http' 不能在构造函数中声明

Angular ng 服务错误 "@angular/compiler-cli"软件包未正确安装