首页 > 解决方案 > 如何在编译期间替换字符串

问题描述

我得到了准确的 '\n' ,我想在编译期间用下面的代码替换它,但是,我得到了一个错误。我该怎么做呢?

它是来自 firebase firestore 的全文对象。我也尝试过使用<pre>和预包装,但没有任何效果。

错误是错误 TS2339:“项目”类型上不存在属性“replacingOccurrences”。

this.projectsserivice.getProjects()
    .subscribe(projects => {
      this.projects = projects;
     this.projects.forEach(element => {
       const newstr = element.replacingOccurrences('\n', '<br>');
       console.log(newstr);
     });
    }, errmess => this.ProerrMess = <any>errmess);

标签: angularfirebase

解决方案


如果那是 javascript,那么replacingOccurrences任何标准原型中都没有。

我看到那element是一个Project,我想它是你的一类。你确定你定义了一个名为的方法replacingOccurrences吗?

如果要替换字符串中出现的所有文本,则可能需要使用replace

如果 Project 是一个包含一些字符串的对象,并且您想要替换包含的每个字符串,您可以执行以下操作:

Object.keys(element)
    .filter(item => typeof(item) == 'string') //only using replace on strings
    .forEach(item => element.item = element.item.replace("\n", "<br/>"));

这段代码只改变第一级的孩子。

因此,如果您的项目仅包含,如您在评论中所说,3 个字符串并且没有内部对象,您的代码应该像这样工作:

this.projectsserivice.getProjects()
    .subscribe(projects => {
        this.projects = projects;
        this.projects.forEach(element => {
            Object.keys(element)
                .filter(item => typeof(item) == 'string' && element.item) //only using replace on strings
                .forEach(item => element.item = element.item.replace("\n", "<br/>"));
        });
    }, errmess => this.ProerrMess = <any>errmess);

推荐阅读