我收到错误:
EXCEPTION: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;
}
}
我需要做些什么来完成这项工作?我在其他人的代码中看到了类似的例子,所以我认为这应该有效。
答案 0 :(得分:2)
你应该在转换函数的开头插入条件
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;
}
}
}
答案 1 :(得分:0)
您的管道将被执行多次。有些时候,比如你的组件还没有完全初始化,"值"将是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;
}
(我一般认为最好尽早回来,但Yoav Schniederman的回答也完全有效。)