Angular模板内能否无需自定义函数实现parseInt类型转换?
解决方法
不用写自定义转换函数,有几种简单方式可以解决这个问题:
在ngClass条件里用一元加号转换类型
一元加号+能直接把字符串类型的currentPage转为数字,Angular模板支持这个操作,直接在比较条件里用就行:<ul *ngIf="(route.queryParams | async).page as currentPage"> <!-- 注意:Angular(2+)里循环指令是*ngFor,不是AngularJS的*ngRepeat --> <li *ngFor="let page of pages" [ngClass]="{ 'active': +currentPage === page }">{{ page }}</li> </ul>把数字page转为字符串比较
反过来,把数字类型的page转成字符串,和currentPage做全等比较:<ul *ngIf="(route.queryParams | async).page as currentPage"> <li *ngFor="let page of pages" [ngClass]="{ 'active': page.toString() === currentPage }">{{ page }}</li> </ul>使用宽松相等(不推荐,但可用)
直接用==做宽松相等比较,它会自动处理类型转换,但这种方式可能带来潜在的类型问题,仅当你能完全确定参数格式时使用:<ul *ngIf="(route.queryParams | async).page as currentPage"> <li *ngFor="let page of pages" [ngClass]="{ 'active': page == currentPage }">{{ page }}</li> </ul>
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

