不允许通过字符串文字进行 Angular 2 访问
Posted
技术标签:
【中文标题】不允许通过字符串文字进行 Angular 2 访问【英文标题】:Angular 2 access via string literals is disallowed 【发布时间】: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.Serverprojects$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 设置。
是的,它不存在
【参考方案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;
)
【讨论】:
以上是关于不允许通过字符串文字进行 Angular 2 访问的主要内容,如果未能解决你的问题,请参考以下文章
不允许通过字符串文字访问对象!当我尝试通过动态 id 访问 (route.params['id'] 路由参数时
ASP.NET Core Web API + Angular 对预检请求的响应未通过访问控制检查:预检请求不允许重定向
Android 5.0.2 及更高版本不允许通过蓝牙 LE 进行 HID 访问