[英]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.