Angular 为*ngFor使用带有三元运算符的自定义管道

Angular 为*ngFor使用带有三元运算符的自定义管道,angular,Angular,我正在使用带有三元运算符的自定义管道来表示*ngFor,因此会出现错误。不知道如何解决。请帮忙 html: app.module.ts: import { NgModule } from '@angular/core'; import { TruncatePipe } from './truncate.pipe'; @NgModule({ imports: [ ], declarations: [ TruncatePipe ], expor

我正在使用带有三元运算符的自定义管道来表示*ngFor,因此会出现错误。不知道如何解决。请帮忙

html:

app.module.ts:

import { NgModule }      from '@angular/core';
import {  TruncatePipe }   from './truncate.pipe';

@NgModule({
  imports:      [
  ],
  declarations: [
    TruncatePipe
  ],
  exports: [ 
  ]
})

export class AppModule { }
错误:

找不到类型为“字符串”的不同支持对象“10…”。NgFor只支持绑定到数组“”之类的可重用文件。在html文件中


您正在将字符串传递给不接受的NGF。确保通过阵列。i、 当您将整个数组传递到管道时,ex应该是数组。 如果长度高于或低于限制,则返回数组不变。 否则,它将返回数组长度,后跟trail

您很可能有一个数组y=['str-1','str-2','str-3'…] 你的电话号码是limitTo:y.limit?y、 长度:10 如果y没有限制字段,或者如果它为0,则默认为10

在您的问题中,调用管道时使用参数value=y和limit=10 小径是“…”

如果数组y的长度低于本例中的限制10,则为false 它最终将返回不变的数组

否则它将返回limit+trail,该值等于10+“…”。 这是一根绳子

字符串不可编辑,因此您将收到一个错误。

谢谢大家

解决方案有效:

<div *ngFor="let x of (y.limit ? (y | slice: 0 : y.length) : (y | slice: 0 : 10))">

参考此链接,@Dixit Savaliya pipe不适用于*ngFor.add圆括号,请考虑最后一个:是管道的一个新参数,让x of y | limito:y.limit?y、 长度:10*ngFor不适用于字符串。您应该在*NGE中使用数组。G请提供一个,最好是stackblitz,y是什么?如果是这样,那么删除我的自定义管道,*ngFor应该不起作用。我不确定想要的结果是什么。如果你愿意解释的话,我会尽力帮你的。
import { NgModule }      from '@angular/core';
import {  TruncatePipe }   from './truncate.pipe';

@NgModule({
  imports:      [
  ],
  declarations: [
    TruncatePipe
  ],
  exports: [ 
  ]
})

export class AppModule { }
<div *ngFor="let x of (y.limit ? (y | slice: 0 : y.length) : (y | slice: 0 : 10))">