2015-10-28 58 views
14

嗨。我是Angular的新手。我正在測試Angular 2.0。Angular 2.0。差@ @ @組件

我看了tuto here和指南here。在tuto中,模板在@Component註釋中指定,而在指南中則在@View註釋中指定。所以我想知道這兩種方法有什麼區別?我在api預覽中查了一下,但是解釋並不清楚。

+2

沒有真正的區別。 ['@View只是可選的](https://github.com/angular/angular/pull/4566) –

+0

請看看[這裏](http://stackoverflow.com/a/40215048/1592107) – Shivam

回答

21

更新

@View()移除(我想在beta.13的CHANGELOG.md並不雖然提到它)。

原始

它們之間沒有差異。這只是糖,你可以指定所有的視圖配置到Component,所以沒有必要導入View裝飾。

但是同時需要保留View裝飾器存在,因爲它允許我們根據語言或媒體類型對同一個組件使用不同的視圖。例如:

@Component(/* ... */) 
@View({ 
    media: 'desktop', 
    template: 'Template for desktop' 
}) 
@View({ 
    media: 'mobile', 
    template: 'Template for mobile' 
}) 
extends class Component() {} 

此功能尚未實施。

+1

根據伊戈爾在https://github.com/angular/angular/pull/4566中的評論,未來這可能不會成立,視圖切換邏輯將在別處定義,可能通過DI,我們將看到。「 – Chandermani

+0

是否有一個組件具有多個視圖,如答案中所述? –

+0

@alexpods這也不適合我'媒體類型'或我不能正確理解你說的。請您在同一個組件中使用兩個'@ view'爲我提供工作代碼的演示(plnkr或小提琴)。 –

3

正如在評論的答案,@Eric @Alexpods時angular2是阿爾法@view之前說的是凸狀部可選的,因爲在@view標註的所有屬性也包含在@Component註解中@view只是糖您可以將所有視圖配置指定到組件中,因此不需要導入視圖裝飾器。

更新到公測

@View已在最新版本被棄用,所以你不能使用它。

如果您使用靜態@view註釋它可能會導致產生某種錯誤。所以只有組件纔是可以容納所有選項的地方。

根據官員的說法,@View元數據裝飾器已在beta.10發行版中棄用。

2

作爲每角V2.0.0-beta.11的更改日誌,則下破的更改@View()註釋(先前已棄用)已被移除提及。應用程序應該使用@Component()裝飾器。

請在Angular2 here.

的變更日誌看看
1

首先,這被廢棄,現在已完全不見了

2.0.0-beta.10(2016-03-17):@View()註釋(以前不推薦使用)已被刪除。應用程序應該使用@Component()裝飾器。

因此,您不必再擔心@View之前的介紹,因爲早期的想法是組件中可能存在多個視圖(例如,像移動視圖),並且用法與如下:

import { Component } from '@angular/core'; 

    @Component({ 
     selector: 'app-root', 
     styleUrls: ['./app.component.scss']}) 
    @View({ 
     media: 'desktop', 
     template: '<h1>tablet<h1>' 
    }) 
    @View({ 
     media: 'mobile', 
     template: '<h1>mobile<h1>' 
    }) 

    extends class Component() {}