Angular 8 将管道注入另一个管道不起作用
Angular 8 inject pipe into another pipe does not work
从 Angular 7 升级到 Angular 8 后,我的 pipe 停止工作并出现错误:
TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
10 | export class APipe implements PipeTransform {
11 |
> 12 | constructor(
| ^
13 | private readonly bPipe: BPipe,
14 | private readonly cPipe: CPipe) {}
或有类似错误:
Error: Found non-callable @@iterator
我的管道代码:
@Pipe({
name: 'aPipe'
})
export class APipe implements PipeTransform {
constructor(
private readonly bPipe: BPipe,
private readonly cPipe: CPipe) {}
transform(someValue: any, args?: any): any {
if (!someValue) {
return ' — ';
}
if (cond1) {
return this.bPipe.transform(someValue, ...args);
}
else {
return this.cPipe.transform(someValue, ...args);
}
return ' — ';
}
}
我必须在 Angular8 中明确将管道标记为 @Injectable()
还是有什么问题?
编辑
在您的模块中提供它:Source
管道不可注射。他们只是平常 类。
这意味着如果你想要一个管道到另一个管道,这将通过
完成
const cPipe = new CPipe(...);
从 Angular 7 升级到 Angular 8 后,我的 pipe 停止工作并出现错误:
TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
10 | export class APipe implements PipeTransform {
11 |
> 12 | constructor(
| ^
13 | private readonly bPipe: BPipe,
14 | private readonly cPipe: CPipe) {}
或有类似错误:
Error: Found non-callable @@iterator
我的管道代码:
@Pipe({
name: 'aPipe'
})
export class APipe implements PipeTransform {
constructor(
private readonly bPipe: BPipe,
private readonly cPipe: CPipe) {}
transform(someValue: any, args?: any): any {
if (!someValue) {
return ' — ';
}
if (cond1) {
return this.bPipe.transform(someValue, ...args);
}
else {
return this.cPipe.transform(someValue, ...args);
}
return ' — ';
}
}
我必须在 Angular8 中明确将管道标记为 @Injectable()
还是有什么问题?
编辑
在您的模块中提供它:Source
管道不可注射。他们只是平常 类。
这意味着如果你想要一个管道到另一个管道,这将通过
完成const cPipe = new CPipe(...);