热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有条件地应用指令

如何解决《有条件地应用指令》经验,为你挑选了5个好方法。

我正在使用Material 2来添加md-raised-button.

我想仅在某些条件成立时应用此指令.

例如:


另一个例子:我在plunker中创建了一个基本的动态反应形式.我正在使用formArrayName反应形式的指令来控制数组.我想formArrayName仅在特定条件成立时才应用指令.否则不添加formArrayName指令.我尝试和研究了很多,但可以找到任何解决方案.

这是plunker链接:https://plnkr.co/edit/oPZ7PyBSf8jjYa2KVh4J ? p = preview

我真的很感激任何贡献.

提前致谢!



1> Aldracor..:

您可以使用以下方法:

应用于您的plunker:fork

更新:

如何condition ? '' : null作为价值:

当它的空字符串('')成为attr.md-raised-button=""时,它null的属性将不存在.

更新: plunker更新:fork(版本问题已修复,请注意问题最初是基于角度4)


似乎在我的v6中不起作用
在Angular 6中不适合我.plunker样品没有通过装载屏幕.根据我的阅读,这种方法可能适用于HTML属性,但不适用于Angular指令.最初的问题是关于ng材料库的Angular Directives.
@kbpontius感谢您的评论,它适用于HTML属性,但不适用于angular指令(作为属性)

2> LLL..:

我不知道你是否可以根据条件应用指令,但是解决方法是有2个按钮并根据条件显示它们.


 

编辑:也许这会有所帮助.


感谢您的答复.但我已经在plunker示例中使用了这种技术,我在问题细节中添加了这些技术.如果代码很复杂,这是一个很好的选择但不是好主意.因为这种技术破坏了重用的概念.您可以在plunker中看到我的示例,并注意我的代码是如何因为这种方法而重复的.这就是为什么我不想使用这种技术.我想要一些更好的解决方案,所以我可以生成动态元素.
这是一个非常糟糕的解决方案,因为它重复了代码。想象一下,这不仅是按钮,而且是一个div,其中包含很多html代码。
这是个好主意,但不幸的是它在反应形式的情况下不起作用.使用反应形式,会出现另一个问题.如果我将输入放入单独的组件中,那么angular将要求我在该子组件中添加[formGroup] ="form".但是,如果我这样做,那么我的数组绑定将无法正常工作.

3> H.B...:

如前所述,这似乎不可能.可以用来至少防止一些重复的一件事是ng-template.这允许您提取受ngIf分支影响的元素的内容.

例如,如果您想使用Angular Material创建分层菜单组件:



    {{ item.icon }}
    {{ item.label }}






    

    
        
    

这里是条件应用的指令matMenuTriggerFor,它只应用于带子节点的菜单项.按钮的内容通过插入两个位置ngTemplateOutlet.


这是让开发人员使用条件指令以及代码可重用性的唯一答案.

4> Tiha..:

这可能会迟到,但它是一种可行且优雅的方法,可以有条件地应用指令.

在指令类中创建输入变量:

@Input('myDirective') options: any;

应用指令时,设置输入变量的apply属性:

在指令的方法中检查变量this.options.apply并根据条件应用指令逻辑:

ngAfterViewInit(): void {
    if (!this.options.apply) {
        return;
    }

    // directive logic
}


这对我不起作用,因为该指令仍然存在于组件中,它只是不执行逻辑.我希望条件的存在有条件地适用,特别是因为有css检查这个指令.

5> Ankit Singh..:

正如其他人所说,directives无法动态应用.

但是,如果您只想将平面md-button的样式从平面切换到凸起,那么这个


会做的伎俩.Plunker


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
author-avatar
巡山小妖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有