[英]Why can I not use the indexOf function in my angular 2 typescript code?
我收到错误:
例外:value.indexOf不是函数
每当我尝试使用javascript函数时。 这是代码:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'id'
})
export class IdPipe {
transform(value: string): string {
let start = value.indexOf('"id": "')
let id = value.substring(start + 7, start + 7 + 36);
return id;
}
}
我需要做些什么才能使这项工作? 我在其他人的代码中看到了类似的示例,因此我认为这应该可行。
您应该在转换函数的开头插入条件
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'id'
})
export class IdPipe {
transform(value: string): string {
if(value !== null && value !== undefined){
let start = value.indexOf('"id": "')
let id = value.substring(start + 7, start + 7 + 36);
return id;
}
}
}
您的管道将执行多次。 在某些情况下,例如当您的组件尚未完全初始化时,“ value”将为null
或可能undefined
,然后它将没有indexOf
方法。 这就是为什么您会收到此错误。
添加安全检查:
transform(value: string): string {
if (!value) return value;
let start = value.indexOf('"id": "')
let id = value.substring(start + 7, start + 7 + 36);
return id;
}
(我一般认为最好早点回来,但约夫·施尼德曼的回答也很有效。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.