期望操作员为相似类型或任何角度

The*_*Tsg 6 html typescript angular

我遇到了无法找到解决方案的问题在此处输入图片说明

如我所见router: Routerrouter.url: string。所以我找不到任何解释,为什么它在html中抱怨router.url === '/successlogin'。任何的想法?

更新:我更改了路由器的类型,router.url: String现在还可以,但是我认为它应该工作相反。为什么会这样呢?直到现在,我还认为类型string是“正确的” 类型,而不是String...

我的代码简化了:

的HTML

<div *ngIf="!global.showUnauthorizedMessage || router.url === '/successlogin'" class="beforeFooter"></div>
 <div *ngIf="!global.showUnauthorizedMessage || router.url ==='/successlogin'" id="footer">
Run Code Online (Sandbox Code Playgroud)

零件

import { Router } from '@angular/router';
constructor( public router: Router) { code here }
Run Code Online (Sandbox Code Playgroud)

A. *_*rel 7

此消息来自VSCode的“ Angular Language Service”扩展!

可能是更新,因为在我没有此消息之前...

我发现的2个解决方案是这样使用的localeCompare()

router.url.localeCompare('/successLogin')===0
Run Code Online (Sandbox Code Playgroud)

要么

String代替string


yan*_*nky 4

快速修复此问题:

a)将“/successlogin”存储在某个变量中并与该变量进行比较

成分

import { Router } from '@angular/router';

export class someComponent {

successLogin = '/successlogin'; 

constructor( public router: Router) { code here }
}

Run Code Online (Sandbox Code Playgroud)

网页

<div *ngIf="!global.showUnauthorizedMessage || router.url === successLogin" class="beforeFooter"></div>
 <div *ngIf="!global.showUnauthorizedMessage || router.url === successLogin" id="footer">
Run Code Online (Sandbox Code Playgroud)

请注意,由于这似乎是一条路径,因此从可维护性的角度来看,理想情况下应该从常量文件中读取它。

干杯(y)