当前位置: 首页 > 知识库问答 >
问题:

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

童子明
2023-03-14

我对Angular中的指示符和装饰符感到非常困惑。我认为任何以@为前缀的东西都是装饰器,现在当我读到指令时,它说,Component是一个指令。这是怎么回事?对此事的任何澄清都将是有益的。

共有3个答案

卜和悌
2023-03-14

装饰

装饰器只是增强类、属性或方法的角函数。它们将配置元数据作为输入,并在运行时处理类、属性或方法。它们的前缀为@符号。

@Componet装饰器与TypeScript类一起使用,它们将类转换为Angular组件。

@Component({
  selector: 'any-app',
  templateUrl: './template-path.html',
  stylesUrls: ['./styles.css']
})
export class AnyAppComponent {}

@Input()decorator与类的属性一起使用,它允许父组件将任何数据发送给子组件。

@Input() parentProperty: any;

指令只是TypeScipt类,它具有@Directive装饰器。简单来说:

Directives = @Directive + TypeScript Class

一个例子是演示指令。

@Directive({
    selector:  '[demo]'
})
export class DemoDirective {}

此指令可以在任何 HTML 元素中使用,使用选择器名称。要使用指令,可以简单地将其合并到HTML元素中。这是如何使用:

<div demo>HELLO</div> 
杨选
2023-03-14

角度指令

装饰师:

装饰器是一种特殊的声明,可以附加到类声明、方法、访问器、属性或参数上。Decorators使用@expression形式,其中expression必须计算出一个函数,该函数将在运行时使用被修饰声明的信息进行调用。

下面是来自 TypeScript 文档的一个示例装饰器,称为 sealed:

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修饰符的类。组件也是带有模板的指令。@Component修饰符实际上是一个@Directive修饰符,扩展了面向模板的特性。每当Angular渲染一个指令时,它都会根据该指令给出的指令更改DOM。该指令出现在与属性类似的元素标记中。

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

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

注意当定义一个角度分量时,我们是如何使用@component指令的?

@Component({
  selector: ‘main’,
  template: `<child-dir #c=”child”></child-dir>`
})
class MainComponent { .. }
邢雨华
2023-03-14

指示

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

> < Li > < p > https://angular . io/guide/attribute-指令

https://www.sitepoint.com/practical-guide-angular-directives/

装饰师

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

我们可以说< code > decorator 是函数,并且有四个东西(类、参数、方法和属性)可以被修饰,这将遵循每个不同的函数签名。

>

  • 这是一个很好的例子https://angular-2-training-book.rangle.io/features/typescript/decorators

    https://codecraft.tv/courses/angular/es6-typescript/decorators/

  •  类似资料:
    • 问题内容: 我正在尝试使用Angular的“装饰器”功能向某些指令添加功能。假设我的指令名称是myDirective。我的代码如下所示: ]); 我不断收到此消息: 尽我所能,指令在装饰器函数运行时已被注册。任何见识将不胜感激! 问题答案: 本文说明了实际上如何将带指令的decorator()使用。 您只需将“指令”作为名称的后缀即可。因此,在我的示例中,我应该一直在做 http://angula

    • rank ▲ ✰ vote url 14 805 326 554 url 装饰器@staticmethod和@classmethod有什么区别? 也许一些例子会有帮助:注意foo, class_foo 和static_foo参数的区别: class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,

    • 我刚刚开始使用Angular 2。 我想知道Angular 2中的组件和指令有什么区别?

    • 问题内容: 我想这就是它们的称呼,但我会举一些例子以防万一。 装饰类: 装饰器功能: 使用一个或另一个只是口味的问题吗?有实际区别吗? 问题答案: 如果您可以编写函数来实现装饰器,则应首选它。但是并非所有装饰器都可以轻松地编写为一个函数-例如,当您要存储一些内部状态时。 我见过人们(包括我自己)经过荒唐的努力,只用函数编写装饰器。我仍然不知道为什么,一个班级的开销通常可以忽略不计。

    • 我仔细阅读了关于这个主题的AngularJS文档,然后随意修改了一个指令。小提琴在这里。 下面是一些相关的片段: > 来自HTML: 在窗格指令中: 有几件事我不明白: 为什么必须使用与和与? 是否也可以直接访问父范围,而不使用属性装饰元素? 文档说“通常希望通过表达式将数据从独立作用域传递到父作用域”,但这似乎也适用于双向绑定。为什么表达式路由会更好? 我找到了另一个显示表达式解的fiddle:

    • 问题内容: 我已经仔细阅读了有关该主题的 AngularJS 文档,然后摆弄了一条指令。这是jsfiddle。 以下是一些相关的摘要: 从 HTML : 从窗格指令: 我没有几件事: 为什么必须与和一起使用? 我是否还可以直接访问父范围,而不用属性装饰元素? 该文档说: “通常希望通过表达式将数据从隔离的范围传递到父范围” ,但这似乎也可以与双向绑定一起使用。为什么表达途径会更好? 我发现了另一个