在 Angular 组件的模板中使用“this”关键字

2023-11-27

假设我们有一个prop组件类中的变量,我们通过模板中的插值使用它(堆栈闪电战演示):

组件类:

@Component({...})
export class AppComponent  {
  prop = 'Test';
  ...
}

模板:

<p>{{ this.prop }}</p>
<p>{{ prop }}</p>

为什么在 Angular 中可以使用this模板中的关键字没有任何警告/错误(即使在 AOT 模式下)?背后是什么?

Edit

根据答案中的评论:this 指为其呈现模板的组件本身。但我也可以创建一个模板变量并使用它访问它this:

<input #inp> {{ this.inp.value }}

在这种情况下,我们没有inp组件类中的变量,我仍然可以使用它来访问它{{this.inp...}}. Magic?


我不认为有人可以在这里给出非常准确的答案(也许来自 Angular CLI 团队的人),但是我得出的结果是组件渲染器完全忽略了this关键字在看起来有效的地方(有一些例外)。

Proof

<input #heroInput value="0">
This prints the component JSON without heroInput: {{ this | json }}

<input #heroInput value="0">
This prints 0: {{ this.heroInput.value }}

<div *ngFor="let val of [1,2,3]">
  <input #heroInput [value]="val">
  Overrides heroInput with current value: {{ this.heroInput.value }}
</div>

This prints 0: {{ this.heroInput.value }}

从上面可以假设this类似于 AngularJS (角度 1)scope,其中scope包含组件属性。

它没有解释为什么 HeroInput 没有列出在this | json still.

然而,以下内容完全被破坏:

{{ this['heroInput'].value }}

它给出了一个错误:无法获取value未定义的。它应该,不,它必须有效,除非(唯一的解释)this在每种情况下都被忽略但是

{{ this | json }}

其中它引用组件,因为这是从模板调试整个组件对象的唯一方法。也许还有一些其他例外。

Updated 堆栈闪电战

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Angular 组件的模板中使用“this”关键字 的相关文章

随机推荐

  • 如何清理ThreadLocals

    有人有一个如何做到这一点的例子吗 它们是由垃圾收集器处理的吗 我正在使用 Tomcat 6 javadoc 是这样说的 只要线程处于活动状态并且 ThreadLocal 实例可访问 每个线程就持有对其线程局部变量副本的隐式引用 线程消失后
  • 在 C# 中的 Excel[2007] 中添加超链接 - 在 Excel 本身中

    谁能告诉我如何在 Excel 2007 或更高版本 中添加超链接 使用 NET c 中的 Office Interop 将一张工作表中的单元格复制到另一张工作表中的单元格 例如 从 Sheet1 单元格 A1 到 Sheet2 单元格 B1
  • 如何将 apklib 转换为 aar

    由于 Gradle 不支持apklib依赖项如何迁移apklib依赖于aar依赖关系 是否可以手动或自动转换apklib依赖于aar 如果是 如何 如果否 为什么不呢 在这个问题中 我假设我没有原始项目apklib 而是文件本身 apkli
  • BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

    在 WCF 中 有几种不同类型的基于 HTTP 的绑定 基本Http绑定 WsHttp绑定 WebHttp绑定 这3个有什么区别 特别是在功能 性能和兼容性方面有哪些差异 您在这里比较苹果和橙子 webHttp绑定是 REST 风格的绑定
  • 存储帐户阻止容器创建的网络规则

    按照说明进行操作创建 blob 的 Azure CLI 快速入门 看起来默认存储帐户中的某些内容阻止了创建新容器的能力 然而 defaultAction is Allow 以下 Azure CLI az storage container
  • 更改 FileSystemObject 的当前目录

    使用 FileSystemObject 时 您可以使用路径 引用运行脚本的目录 是否可以更改 FileSystemObject 认为的当前目录 以便您可以使用 其他目录的路径语法 例子 Set fso CreateObject Script
  • 作为属性与字段访问和更改结构

    好吧 我将开始我的问题 说我了解可变结构背后的邪恶 但我正在使用 SFML net 并使用大量 Vector2f 和此类结构 我不明白的是为什么我可以拥有并更改类中的字段的值 但不能对同一个类中的属性执行相同的操作 看一下这段代码 usin
  • 用于管理 github 中共享存储库上的拉取请求的工作流程

    我正在尝试管理我不拥有但具有管理员权限的存储库上的拉取请求 当我尝试从另一个分支中提取更改时 它失败并出现不太清楚的错误 这是我的工作流程 分叉主仓库 在该分支中进行更改 致力于该分叉3 5 转到步骤2 向主存储库提交拉取请求 作为主存储库
  • Drools 中的 Mvel 方言是什么?

    我是流口水的新手 我正在创建规则 但出现编译时错误 字段不可见 我尝试检查 Jboss 示例 它们在哪里使用方言 mvel 它编译了 我听不懂方言 那么什么是dialect mvel mvel 或者MVFLEX 表达式语言 has a 丰富
  • 堆叠条形图 d3.js 的每个条形上的文本

    我想在 d3 js 库提供的堆积条形图中的堆积条形的每个条形中都有一些文本 感谢您的帮助 我在这里定制了示例link但我没有改变 javascript 代码中的任何其他内容 and here is the result 这是重要的代码 st
  • 具有 3 个条件的 IF 函数

    我正在寻找一个具有 3 个条件的公式 目前它仅适用于 2 个条件 这就是我正在寻找的 E9有一个号码 如果号码是21 然后我希望它显示文本1 如果数字介于5 and 21 然后我希望它显示文本2 如果数字低于5 然后我希望它显示文本3 这就
  • 如何取消Spring定时器的执行

    我需要取消 Spring 计时器执行或至少根据某些条件更改执行频率 两者都在使用org springframework scheduling quartz SimpleTriggerBean and org springframework
  • 从 oracle 函数返回布尔值

    尝试从函数返回值 create or replace function compairenumber num1 in number num2 in number return boolean is begin if num1 lt num2
  • 在可以出现零次或多次的字符之后截断 R 中字符串的末尾

    我有以下数据 temp lt c AIR BAGS FRONTAL SERVICE BRAKES HYDRAULIC ANTILOCK PARKING BRAKE CONVENTIONAL SEATS FRONT ASSEMBLY POWE
  • 如何“限制”

    内的文本?

    我这里有一个邮件模板通讯 http www newsletter vendopor com m29 04 13 index2 html 但最后有一个包含该文本的段落 感谢您的支持 我很羡慕您的朋友们 这段文字 走出段落 我在css中有一个宽
  • 更改 jQuery 数据表中显示的行数

    为什么行数jquery datatable 见下面的代码 是不是设置为5 默认情况下等于 10 8as 为什么 iDisplayLength 5在这里不起作用
  • Angular - HTTP 拦截器重试具有特定错误状态的请求?

    我正在尝试使用拦截器来处理 http 错误并重试特殊错误状态 在我的例子中是状态代码 502 intercept request HttpRequest
  • 如何以编程方式更改操作栏项目的背景颜色

    通过设置可以轻松设置操作栏中项目背景的默认颜色
  • 如何从特定列中检索特定数据?

    我的应用程序有一个包含列的 SQLite 表id category and item name category是字符串类型 主键是id 我想检索类别中所有项目的名称Veg然后在列表视图中显示它 我尝试了以下查询 String vg Veg
  • 在 Angular 组件的模板中使用“this”关键字

    假设我们有一个prop组件类中的变量 我们通过模板中的插值使用它 堆栈闪电战演示 组件类 Component export class AppComponent prop Test 模板 p this prop p p prop p 为什么