2017-01-29 50 views
5

的例子來自angular.io不會爲我工作:角2 - * ngIf與其他塊給我「不能綁定到‘ngIfElse’」,但* ngIf沒有else塊直接作用

<button (click)="show = !show">{{show ? 'hide' : 'show'}}</button> 
show = {{show}} 
<br> 
<div *ngIf="show; else elseBlock">Text to show</div> 
<template #elseBlock>Alternate text while primary text is hidden</template> 

相反,瀏覽器控制檯錯誤:「無法綁定到'ngIfElse',因爲它不是'div'的已知屬性。」

我的模塊看起來像這樣(我包括CommonModule):

import { CommonModule } from '@angular/common'; 
import { NgModule }  from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { BrowserModule } from '@angular/platform-browser'; 

import { AppComponent } from './app.component'; 

@NgModule({ 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    CommonModule 
    ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

所以我不知道是什麼問題?如果我只是從div中刪除「; else elseBlock」,則* ngIf語句按預期工作。因此,我相信我的進口是正確的。任何幫助是極大的讚賞。

+1

您使用哪個版本的角度?導入'CommonModule'在你的情況下是Reduntant – yurzui

+3

'ngIfElse'輸入自角度** 4.0.0-beta.0 **開始引入** – yurzui

+0

我剛剛開始學習Angular並從快速入門種子項目入手。看看我的package.json,我相信我在大多數情況下使用2.4.0: 「依賴關係」:{angular angular/common}:「〜2.4.0」, 「@ angular/compiler」: 「〜2.4.0」, 「@ angular/core」:「〜2.4.0」, 「@ angular/forms」:「〜2.4.0」, 「@ angular/http」:「〜2.4.0 「, 」@ angular/platform-b​​rowser「:」〜2.4.0「, 」@ angular/platform-b​​rowser-dynamic「:」〜2.4.0「, 」@ angular/router「:」〜3.4。 0「, – rhino

回答

2

所以我在將我的package.json文件中的角度版本從2.4.0更改爲4.0.0-beta.5後得到了這個工作。如果你看角度更新日誌(https://github.com/angular/angular/blob/master/CHANGELOG.md),看起來ngIf的'else'部分甚至沒有工作,直到角4.0.0-beta.0

我不確定爲什麼官方文檔解釋瞭如何使用'else 「因爲,在寫這篇文章的時候,最新的穩定版本甚而不支持」的* ngIf

0

別人的一部分這將在角4版工作

//語法ngIf/ELSE

<div *ngIf=」condition; else elseBlock」>Truthy condition</div> 
<template #elseBlock>Falsy condition</template> 

只需升級e角度版本從2到4,休息都很好