angular - TypeError:无法读取未定义的属性“toUpperCase”
问题描述
我试过使用自定义管道。这是我的管道文件
import { Pipe, PipeTransform } from '@angular/core';
import { User } from 'src/app/user';
import { ApiService } from 'src/app/api.service';
import { Observable } from 'rxjs';
import { isNgTemplate } from '@angular/compiler';
import { map } from 'rxjs/operators';
@Pipe({
name: 'my-pipe'
})
export class MyPipePipe implements PipeTransform {
isEqual = false;
api: ApiService;
transform(post_id: number, users: Observable< User[]> ): any {
// users = this.api.getUserList();
users.subscribe(user => user.filter(userss => {
if (userss.id === post_id && post_id !== null) { this.isEqual = true; } else {
console.log(this.isEqual + ' ' + ' hataa');
}
}));
}
我想要的只是不存在的用户无法发布。因此我尝试将用户的 ID 与帖子的用户 ID 相等。这是我的 html 代码
<div class="form-group">
<label for="userId">User Id</label>
<input type="number" class="form-control" id ="userId" name="userId" required [(ngModel)]="posts.userId">
<!--<div class="tetx text-danger" *ngIf="!isEqual" >Invalid Id!!!</div>-->
<div *ngIf=" my-pipe: posts.userId " >
Invalidd
</div>
</div>
但不幸的是,我收到了这个错误:
[Angular] TypeError:无法读取未定义的属性“toUpperCase”
解决方案
该错误来自尝试编译您的模板的 Angular 编译器。
为您的管道选择另一个名称,即myPipe
:
@Pipe({
name: 'myPipe'
...
*ngFor="let u of users_s | myPipe"
如果不向它传递值,你就不能使用管道:
*ngIf=" my-pipe: posts.userId "
它应该是:
*ngIf="postId | myPipe"