2017-12-14 8 views
0

私はそのように見ている権限の配列を持っている:コンポーネントのコンストラクタでAOTコンプライアンスチェック/ TSコンパイラを角のコードでトリックする方法は?

permissions={ 
    view: "permissionName1", 
    create: "permissionName2" 
} 

あなたが持っているか、許可を与えられていない場合、私は向いてブール値に許可名を変換する方法を持っているので、その結果、実行時の権限は次のようになります。 。

permissions={ 
    view: true, 
    create: false 
} 

私はこのようなテンプレートで許可を使用する必要がある場合、それだけで正常に動作します:私は

<ng-template *ngIf="someSortOfCondition && permissions.view"> </ng-template> 

のような場合は、複数の条件で許可を使用する場合

<ng-template *ngIf="permissions.view"> </ng-template> 

問題はhovewerをoccuresその

言っAOTでコンパイルするとき、これは私にエラーを与えます

タイプ 'string'はタイプ 'boolean'に割り当てられません。

私はそれがかもしれせない正確なエラーmessage.Itがコンパイル時にpermissions.viewは確かに文字列であるので、私は、この条件式のbooleanとして文字列を使用することは明らかである私の記憶からこれを書いた - それはありますアクセス権の名前ではなく、値です。

AOTアナライザを頼りにして、その特定のケースを無視する方法はありますか?パーミッションはコンストラクタで初期化されます。

+0

あなたは '&& !! permissions.view'を試みたことがありますか? – yurzui

+0

@yurzui私はgithubでそれを見て、それをチェックします! https://github.com/angular/angular/issues/11425 – Antoniossss

答えて

1

それはあなたがあなたのテンプレートにpermissions['view']代わりのpermissions.viewを書く場合は、私は、これはスーパー有用であろうことに同意 Filipe Silva

によるthis issueを見ることができますチェックcompilance AOTについて

に動作しますが、それのために を質問する右のreproはhttps://github.com/mgechev/codelyzerです。これは私たちが使用する tslintのアドオンであり、Angular固有のモジュールを実装しています。

関連する問題