繁体   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