Angular 装饰器和指令在角度上有什么区别?

Angular 装饰器和指令在角度上有什么区别?,angular,angular-directive,angular-decorator,Angular,Angular Directive,Angular Decorator,我对Angular中的指令和装饰器非常困惑。我认为任何以@为前缀的东西都是一个装饰器,现在当我读到它所说的指令时,组件就是一个指令。发生什么事?对此事的任何澄清都会有帮助。指令 指令是角度应用程序的构建块 角度分量只不过是带有模板的指令。当我们说组件是角度应用的构建块时 装饰师 装饰器,将类标记为角度组件,并提供配置元数据,用于确定在运行时如何处理、实例化和使用该组件

我对Angular中的指令和装饰器非常困惑。我认为任何以@为前缀的东西都是一个装饰器,现在当我读到它所说的指令时,组件就是一个指令。发生什么事?对此事的任何澄清都会有帮助。

指令

指令是角度应用程序的构建块

角度分量只不过是带有
模板的
指令
。当我们说组件是角度应用的构建块时

装饰师

装饰器,将类标记为角度组件,并提供配置元数据,用于确定在运行时如何处理、实例化和使用该组件

是使用前缀
@
符号调用的函数,后面紧跟着类、参数、方法或属性。decorator函数提供了有关类、参数或方法的信息

我们可以说,
Decorators
是函数,有四个东西(类、参数、方法和属性)可以被修饰,它们将与每个不同的函数签名一起出现

有一些好的博客,你可以阅读他们的更多信息


角度指示和装饰

装饰师:

装饰器是一种特殊的声明,可以附加到 类声明、方法、访问器、属性或参数。 装饰器使用@expression形式,其中expression必须计算为 将在运行时调用的函数,其中包含有关 装饰宣言

下面是TypeScript文档中名为sealed的decorator示例:

function sealed(constructor: Function) { 
Object.seal(constructor); 
Object.seal(constructor.prototype); 
}
您将注意到它将构造函数作为参数。它可以在类上使用,如下所示:

@sealed class Greeter { 
  greeting: string; 
  constructor(message: string) { 
    this.greeting = message; 
  } 
  greet() { 
    return “Hello, “ + this.greeting; 
  } 
}
指令:

Angular指令基本上是一个带有@Directive修饰符的类。A. 组件也是一个带模板的指令。@组件装饰器 实际上是一个@Directive修饰符,用面向模板的方法扩展 特征。每当Angular呈现指令时,它都会更改DOM 根据指令给出的指示。指令 显示在与属性类似的元素标记中

角度指令可分为两种类型:结构指令属性指令

结构指令通过添加、删除和替换DOM中的元素来改变布局。 属性指令更改现有元素的外观或行为。在模板中包含属性指令时,它们看起来像常规HTML属性。实现双向数据绑定的ngModel指令就是属性指令的一个示例。ngModel通过设置现有元素的显示属性并响应更改的事件来修改其行为

请注意,在定义角度组件时,我们是如何使用@component指令的

@Component({
  selector: ‘main’,
  template: `<child-dir #c=”child”></child-dir>`
})
class MainComponent { .. }
@组件({
选择器:'main',
模板:``
})
类MainComponent{..}

可能会重复很多教程。你的职位太宽了,不适合这么做