簡體   English   中英

為什么在我的angular 2打字稿代碼中不能使用indexOf函數?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM