如何使用 TypeScript 将多个参数传递给 Angular 中的 @Directives (@Components)?

2023-12-27

自从我创建了@Directive as SelectableDirective,我有点困惑,关于如何通过超过一个自定义指令的值。我进行了很多搜索,但没有得到正确的解决方案Angular with 打字稿.

这是我的示例代码:

父组件为MCQComponent:

import { Component, OnInit } from '@angular/core';
import { Question } from '../question/question';
import { AppService } from '../app.service/app.service';
import { SelectableDirective } from '../selectable.directive/selectable.directive';
import { ResultComponent } from '../result-component/result.component';

@Component({
    selector: 'mcq-component',
    template: "
         .....
        <div *ngIf = 'isQuestionView'>
            <ul>
                <li *ngFor = 'let opt of currentQuestion.options' 
                    [selectable] = 'opt'
                    (selectedOption) = 'onOptionSelection($event)'>
                    {{opt.option}}
                </li>
            </ul>
            .....
        </div>

    "
    providers: [AppService],
    directives: [SelectableDirective, ResultComponent]
})
export class MCQComponent implements OnInit{
    private currentIndex:any = 0;
    private currentQuestion:Question = new Question();
    private questionList:Array<Question> = [];
    ....
    constructor(private appService: AppService){}
    ....
}

这是具有自定义指令的父组件[可选]它需要一个名为opt.

这是该指令的代码:

import { Directive, HostListener, ElementRef, Input, Output, EventEmitter } from '@angular/core'
import { Question } from '../question/question';

@Directive({
    selector: '[selectable]'
})
export class SelectableDirective{
    private el: HTMLElement;
    @Input('selectable') option:any;

    ...
}

所以在这里我想通过来自父级的更多参数组件,我该如何实现这一目标?


来自文档 https://angular.io/docs/ts/latest/guide/attribute-directives.html

与组件一样,您可以添加尽可能多的指令属性绑定 您需要将它们串在模板中。

添加输入属性HighlightDirective called defaultColor:

@Input() defaultColor: string;

Markup

<p [myHighlight]="color" defaultColor="violet">
  Highlight me too!
</p>

Angular知道defaultColor绑定属于HighlightDirective因为你公开了@Input装饰师。

无论哪种方式,@Input装饰器告诉 Angular 这个属性是 公共且可供父组件绑定。没有@Input, Angular 拒绝绑定该属性。

对于你的例子

有很多参数

将属性添加到Directive与 一起上课@Input()装饰者

@Directive({
    selector: '[selectable]'
})
export class SelectableDirective{
    private el: HTMLElement;

    @Input('selectable') option:any;   
    @Input('first') f;
    @Input('second') s;

    ...
}

并在模板中将绑定属性传递给您的li element

<li *ngFor = 'let opt of currentQuestion.options' 
    [selectable] = 'opt' 
    [first]='YourParameterHere'
    [second]='YourParameterHere'
    (selectedOption) = 'onOptionSelection($event)'>
    {{opt.option}}
</li>

这里关于li元素我们有一个带有名称的指令selectable。在里面selectable我们有两个@Input()'s, f有名字first and s有名字second。我们已将这两个应用到li带有名称的属性[first] and [second]。我们的指令将在其上找到这些属性li元素,为他设置@Input()装饰师。所以selectable, [first] and [second]将受到每个指令的约束li,它具有这些名称的属性。

具有单一参数

@Directive({
    selector: '[selectable]'
})
export class SelectableDirective{
    private el: HTMLElement;

    @Input('selectable') option:any;   
    @Input('params') params;

    ...
}

Markup

<li *ngFor = 'let opt of currentQuestion.options' 
    [selectable] = 'opt' 
    [params]='{firstParam: 1, seconParam: 2, thirdParam: 3}'
    (selectedOption) = 'onOptionSelection($event)'>
    {{opt.option}}
</li>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 TypeScript 将多个参数传递给 Angular 中的 @Directives (@Components)? 的相关文章

随机推荐

  • 在ubuntu上使用JNI时出现java.lang.UnsatisfiedLinkError

    使用 JNI 时出现 java lang UnsatisfiedLinkError 我的测试环境 Ubuntu 12 04 64 位JDK 1 7gcc Ubuntu Linaro 4 6 3 1ubuntu5 这是我的java源 publ
  • 使用unitils/dbMaintain维护数据库,如何排除脚本运行?

    我正在使用unitils 及其dbMaintain模块 来维护本地数据库的状态 dbMaintain 有一个选项可以根据限定符排除 包含脚本 看http www dbmaintain org tutorial html Qualifier
  • 如何在首次加载时触发验证

    有没有办法在第一次加载时触发表单验证 我的表单从数据库加载数据 并且数据可能已经由用户部分填充 所以我想在第一次加载时运行验证以向用户显示他需要填充的内容以及多少 我之前没有提到 我需要在服务器端执行验证 而不是客户端 我使用的所有验证器也
  • 如何在 Symfony 4 中更新安全令牌中的角色而无需重新登录

    我正在尝试在用户确认其电话号码后更新用户的角色 我在数据库中进行更新 user gt setRoles ROLE USER em gt persist user 这工作正常并更新用户在数据库中的角色 之前 用户拥有 ROLE UNACTIV
  • 从不同文件导入类时,Python 3 是否会出现意外行为?

    我正在尝试从一个文件导入一个类 并检查定义它的文件中是否是该类的实例 问题是 而不是返回True来自isinstance 函数 它返回False 因为它是在不同的文件中初始化的 这是一个工作示例 说你有file1 py class Foo
  • onCreate中LinearLayout高度为0

    我正在尝试根据 屏幕高度 我的布局高度 list size 动态调整行的高度 不幸的是在onCreate方法布局高度返回 null 当我在单击侦听器中调用它时并非如此 还有其他方法可以调用它吗 你必须等到布局发生 这是之后onCreate
  • 如何使用 shell 脚本提取 xml 属性?

    我已经使用 grep 从源文档中提取了标签 但是现在我似乎无法弄清楚如何轻松地从字符串中提取属性 另外 我想避免使用标准安装中通常不存在的任何程序 tag img src http imgs xkcd com comics barrel c
  • 在 iPhone 应用程序中使用 XML-RPC

    是否可以在 iPhone 应用程序中使用 XML RPC 调用 什么方法最好 XML RPC 有什么限制吗 谢谢你 保罗 我最近遇到了这个库 看看最后的描述 希望你觉得它有用 https github com eczarny xmlrpc
  • jQuery 动画向前跳转?

    有没有办法及时向前 向后跳跃 jQuery 动画 例如 如果我将某个元素的动画设置为 10 秒 我可以跳到 5 秒 进入该动画吗 优选地 这可以用百分比来设置 您可以停止当前动画 将动画对象的状态设置为初始状态和最终状态之间的中间状态 然后
  • 当给出日期时,如何在 php 中获取该周星期一的日期[重复]

    这个问题在这里已经有答案了 可能的重复 用 PHP 获取一周的第一天 https stackoverflow com questions 1897727 get first day of week in php 当给出日期时 我应该得到该周
  • 在排序和旋转的数组中搜索

    在准备面试时 我偶然发现了一个有趣的问题 您已获得一个已排序然后旋转的数组 例如 Let arr 1 2 3 4 5 已排序 向右旋转两次即可得到 4 5 1 2 3 现在如何最好地在这个排序 旋转的数组中进行搜索 人们可以取消旋转数组 然
  • libnids 样本中从未调用过 tcp_callback

    我正在研究从 pcap 文件中提取 http 数据 我必须重新组装片段 所以我找到了nids lib 我在 Mac os 10 9 5 64 位中使用自制程序安装 libnids 1 24 我尝试运行打印全部样本 http libnids
  • 图片下载后回调函数

    我正在尝试使用以下命令保存图像下载request https github com mikeal request模块 有了这个 request http google com images logos ps logo2 png pipe f
  • Firebase Android 重新连接最多需要 45 分钟

    在某些设备 下面给出的列表 上 Firebase 在重新获得互联网连接后始终需要 20 到 45 分钟才能重新连接 有什么办法可以加快速度吗 我首先认为问题出在 info connected事件侦听器没有被触发 但后来我意识到 如果有一些待
  • 无法在 AngularJS 版本的 SmartAdmin 模板中使用迷你图

    我已经使用 SmarrAdmin 模板启动了一个 angularjs 种子项目 我想在这样的视图中创建迷你图 div class sparkline 50 40 70 div 但图表没有显示 我看到的只是 50 40 70 创建种子角度项目
  • 如何让Android Studio通过Windows防火墙连接到互联网?

    我启用了 Windows 防火墙并启用了入站和出站规则 在 android studio 中 我在 gradle 同步等时收到 连接到互联网被拒绝 错误 已经允许 studio exe 在防火墙中连接 但它不起作用 如果我禁用防火墙 它就可
  • 在 shell 脚本中将换行符附加到输出文件

    我有一个正在 Cygwin 中执行的 shell 脚本 也许这就是问题所在 对于这段代码 我只想编写第一行 并附加一个换行符 echo date User whoami started the script gt gt output log
  • PHPMyAdmin 不导入 unicode

    当我使用 PHPMyAdmin 的导入功能时 它不会导入非 ASCII 字符 例如 以及字符后的其余单词 当我用记事本打开 CSV 文件时 它通常显示非 ASCII 字符 但当我尝试导入它时 它不起作用 手动输入这些缺失的字符是可行的 My
  • 交易范围类似功能

    我希望设置与事务范围非常相似的东西 它在服务上创建一个版本 并将在范围结束时删除 提交 在事务范围内运行的每个 SQL 语句都会在内部查看某些连接池 事务存储 以确定其是否在范围内并做出适当的反应 调用者不需要将事务传递给每个调用 我正在寻
  • 如何使用 TypeScript 将多个参数传递给 Angular 中的 @Directives (@Components)?

    自从我创建了 Directive as SelectableDirective 我有点困惑 关于如何通过超过一个自定义指令的值 我进行了很多搜索 但没有得到正确的解决方案Angular with 打字稿 这是我的示例代码 父组件为MCQCo