Angular 2.0。差异@View @Component

时间:2015-10-28 20:55:15

标签: angular

您好。我是Angular的新手。我正在测试Angular 2.0。

我阅读了tuto here和指南here。在tuto中,模板在@Component注释中指定,而在指南中则在@View注释中。所以我想知道这两种方法有什么区别?我在api预览中查了一下,但解释并不清楚。

4 个答案:

答案 0 :(得分:25)

<强>更新

@View()已删除(我认为在测试版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 :(得分:4)

正如@Alexpods在回答和@Eric评论之前所说的那样,当angular2处于alpha @view时,juts是可选的,因为@view注释中的所有属性也包含在@component注释中,所以@view只是糖而已您可以将所有视图配置指定到Component中,这样就无需导入View装饰器。

已更新至测试版

@View已在最新版本中弃用,因此您无法使用它。

如果您使用静态@view注释,则可能会导致产生某种错误。所以只有组件才能容纳所有选项。

根据官员的说法,@ View元数据装饰器已在beta.10版本中弃用。

答案 2 :(得分:2)

根据Angular v2.0.0-beta.11的ChangeLogs,在中断更改时提到已删除@View()注释(先前已弃用)。应用应该使用@Component()装饰器。

请查看Angular2 here.

的更改日志

答案 3 :(得分: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() {}