Angular 2 - 打开/关闭默认引导模式

2024-04-03

我不想使用Angular2-引导程序 https://github.com/shlomiassaf/angular2-modal or ng2-bs3-模态 https://github.com/dougludlow/ng2-bs3-modal正如问题/答案中所建议的Angular 2 Bootstrap 模态 https://stackoverflow.com/questions/33993310/angular-2-bootstrap-modal and Angular 2.0 和模态对话框 https://stackoverflow.com/questions/34513558/angular-2-0-and-modal-dialog/35233667#35233667

现在。我知道什么打开和关闭引导模式。

  • 显示在以下之间切换display: none; and display: block;
  • 属性在div之间aria-hidden="true" and aria-hidden="false

所以,我很自然地认为,如果我绑定aria-hidden像这样的属性[aria-hidden]="true",我可以操纵它。但遗憾的是,我无法绑定aria-hidden因为它不是已知的属性div。 (笔记,attr.aria-hidden不存在)

我确实知道这可以通过 JQuery 实现$('#myModal').modal()如这个问题所示如何使用 jQuery 打开 Bootstrap 模式窗口? https://stackoverflow.com/questions/13183630/how-to-open-a-bootstrap-modal-window-using-jquery

所以我的问题是,是否有一个 TypeScript 功能可以做同样的事情modal()来自 JQuery,或者有没有办法将函数/变量绑定到aria-hidden?

我现在的html:

<div id="createAccountModal" class="modal fade customForm" role="dialog" [aria-hidden]="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4>Create account</h4>
            </div>
            <div class="modal-body">
               <p>Lorem ipsum</P>
            </div>
            <div class="modal-footer align-left">
                My custom footer
            </div>
        </div>
    </div>
</div

你可以尝试这样的事情,创建myModal.html:

<div class="modal-backdrop fade in" [style.display]="showModal ? 'block' : 'none'"></div>
  <div class="modal" tabindex="-1" role="dialog" style="display: block" [style.display]="showModal ? 'block' : 'none'">
     <div class="modal-dialog">
        <div class="modal-popup">
          <div class="popup-title">
            <span>{{title}} </span>
            <i class="icon-cancel fr" data-dismiss="modal" aria-label="Close" (click)="cancelAction()"></i>
            <p *ngIf="subTitle">{{subTitle}}</p>
          </div>
        <ng-content></ng-content>
      </div>
  </div>
</div>

然后,创建myModal.component.ts:

import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';

const template: string = require('./myModal.html');

@Component({
   selector: 'modal',
   template
})

export class Modal implements OnInit {
  @Input('show-modal') showModal: boolean;
  @Input('title') title: string;
  @Input('sub-title') subTitle: string;
  @Input('cancel-label') cancelLabel: string;
  @Input('positive-label') positiveLabel: string;

  @Output('closed') closeEmitter: EventEmitter < ModalResult > = new EventEmitter < ModalResult > ();
  @Output('loaded') loadedEmitter: EventEmitter < Modal > = new EventEmitter < Modal > ();
  @Output() positiveLabelAction = new EventEmitter();

  constructor() {}

  ngOnInit() {
    this.loadedEmitter.next(this);
  }

  show() {
    this.showModal = true;
  }

  hide() {
    this.showModal = false;
    this.closeEmitter.next({
      action: ModalAction.POSITIVE
    });
  }

  positiveAction() {
    this.positiveLabelAction.next(this);
    return false;
  }

  cancelAction() {
    this.showModal = false;
    this.closeEmitter.next({
      action: ModalAction.CANCEL
    });
    return false;
  }
}

export enum ModalAction { POSITIVE, CANCEL }

export interface ModalResult {
  action: ModalAction;
}

然后创建module为此,您可以在任何地方使用并在任何地方使用它,如下所示:

<modal #deleteUserModal id="deleteUser"
   [show-modal]="isModalOpen"
   [title]="'Delete'"
   >
  <div class="popup-content">
    <p>Are you sure you want to delete the user permanently?</p>
  </div>
  <div class="popup-footer">
    <button class="btn cancel"  aria-label="Close" (click)="deleteUserModal.hide()">
        Cancel
    </button>
    <button type="button" class="btn btn-primary" (click)="deleteSelectedUser(deleteUserModal)" aria-label="Close">
        Delete
    </button>
   </div>
 </modal>

您也可以增强这一点:)

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

Angular 2 - 打开/关闭默认引导模式 的相关文章

随机推荐

  • 为什么 S4 类的 print 调用 `show` 时没有命名空间?

    我有一个包裹shinyjs带有一个名为show 今天 一位用户向我报告 这在使用 S4 对象时会带来问题 因为 打印 S4 对象使用show方法 它在附加时被我的包屏蔽 Example library shinyjs setClass te
  • 使用 Homebrew 在 Mac OS X 上安装 libRmath

    我想安装libRmath dylib在 Mac OS X Mavericks 上最好使用 Homebrew 因为我已经使用了这个包管理器 我没有找到公式libRmath 但我确实找到了一个公式R所以我尝试扩展它 请参阅最后的整个文件 Als
  • 使用 JULI 登录 tomcat 7 的特定应用程序?

    我在 tomcat 7 中使用 java 系统日志记录 但没有日志记录语句写入日志 我已将此文件添加到我的 WEB INF classes 中 创建了日志文件 new xyz test 因此我至少有一些正确的配置 但它是空的 没有日志语句打
  • 使用 argmax 从 Tensor 获取值

    我有一个Tensor形状的 60 128 30000 我想得到的值argmax of the 30000方面 axis 2 此代码是一个示例 tensor tf random uniform 60 128 30000 shape 60 12
  • 为多个组生成不同颜色的 ggplot2 箱线图

    我对 R 和 ggplot 相当陌生 我正在尝试生成按两个变量排序的箱线图 就我而言 物种和实验 到目前为止我通过使用得到了什么 ggplot DF aes Species Protein fill Experiment dodge Exp
  • 如何将 jsdom.jQueryify 与 jasmine-node 一起使用?

    是否可以使用 jsdom 的 jQueryify 功能来使用 jasmine node 我想做的是使用 NodeJS 来测试一些依赖于 DOM 是否存在的 JavaScript 这是我尝试过的简化案例 当我运行脚本时 茉莉花节点识别规范 但
  • 如何以编程方式在 xml 配置文件中的某些位置添加节点

    我们的软件安装在 50 台客户端 PC 上 软件从 xml 配置文件中选取值 每个客户端在配置文件中都有自己的个人节点值 真 假 现在我们发布了新版本的软件 在 xml 配置文件中添加了更多节点 我们如何将新节点添加到客户端现有的配置文件
  • TaskDescription 的主要颜色应该是不透明的 Android 6.0

    我的代码是 if Build VERSION SDK INT gt Build VERSION CODES LOLLIPOP Bitmap bm BitmapFactory decodeResource context getResourc
  • 查找与布尔查询匹配的大型 int 数组子集的算法

    假设我有一个 M 32 位整数的大数组 其中每个值的设置不超过 N 位 现在我想返回与查询 Target AND Value Target 匹配的子集 即目标位出现在数组值中设置的值 暴力破解很简单 只需迭代数组并提取其中 target v
  • Unison:仅在一个方向上同步

    如果我有文件夹 A 和 B 是否可以将新文件从 A 同步到 B 并且不删除 B 中的文件而删除 A 中的文件 也就是说 我想用B作为任何文件的大容器 包括我曾经从A同步然后删除的文件 我认为这被认为是一种 单向同步 我了解您对 Unison
  • 在 eclipse 中使用 java.io 库,以便 FileInputStream 可以读取 dat 文件

    Goal Print the data from a dat file to the console using Eclipse 长期目标 我可以将 dat 文件传递 给可执行文件 它会创建一个带有格式化数据的新 txt 文件 The da
  • jQuery Dragenter 或 Dragover 包含子项

    我目前正在编写一个上传脚本 当然它具有拖放功能 However当我将文件拖到我的元素上时 我试图让它工作 它添加了类拖累然而 因为我的元素有孩子 所以它会不断地触发 因为它进入和离开元素 我想知道什么我怎样才能扩展 dragenter dr
  • 在 Visual Studio 中查看 var 的类型

    有没有办法查看 a 的类型var在 Visual Studio 2013 代码编辑器中 当我有一个疯狂的时候linq查询 很高兴看到结果类型是什么 我不想更换var关键字与实际类型 我只想看看它是什么 还有一个键盘快捷键会向您显示 将光标放
  • Java GUI repaint() 问题?

    我有一个 JFrame 该 JFrame 包含一个 JButton 我单击 JButton 然后创建了 10 个 JTextField 问题 在通过调整窗口大小 强制重新绘制 之前我看不到它们 只有这样我才能看到创建的 JTextField
  • 安装补丁 19 后,Oracle Forms 6i 在启动时崩溃并显示 0xC0000005 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPD 0xC0000005 是STATUS ACCESS VIOLATION 在 winnt h 中定义 这意味着应用程序尝试访问它无法
  • Python super 和设置父类属性

    我在 Python super 以及继承和属性方面遇到了一个非常奇怪的问题 首先 代码 usr bin env python3 import pyglet import pygame class Sprite pyglet sprite S
  • 找到字符串中最长的子串

    我想找到字符串中最长的重复字符序列 ex aabbccc gt ccc aabbbddccdddd gt dddd etc 在第一个示例中 ccc 是最长的序列 因为 c 重复了 3 次 在第二个示例中 dddd 是最长的序列 因为 d 重
  • 如何返回许多 Promise 并在执行其他操作之前等待所有 Promise

    我有一个循环 它调用一个异步执行操作的方法 这个循环可以多次调用该方法 在这个循环之后 我有另一个循环 仅当所有异步工作完成时才需要执行 所以这说明了我想要的 for i 0 i lt 5 i doSomeAsyncStuff for i
  • 使用函数计算 C# 中数组之间的欧几里德距离

    我想计算用户输入的点之间的欧几里德距离 如下所示 static void Main string args int numtest int Parse Console ReadLine int points new int 10 2 for
  • Angular 2 - 打开/关闭默认引导模式

    我不想使用Angular2 引导程序 https github com shlomiassaf angular2 modal or ng2 bs3 模态 https github com dougludlow ng2 bs3 modal正如