- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想动态插入一个<mat-checkbox>
元素变成一个组件。我插入了两个 <mat-checkbox>
元素。一个静态插入(即直接插入模板文件)。
另一个是动态插入的,包含一个<mat-checkbox>
和另一个普通复选框 <input type="checkbox" />
第一个(静态插入的)渲染没有任何问题。
动态插入的正常输入也没有任何问题。
但是<mat-checkbox>
动态插入的未按预期呈现。
组件.html:
<mat-checkbox> checkbox (static) </mat-checkbox>
<div [innerHTML] = "test2">
组件.ts:
this.test= `
<mat-checkbox>mat-checkbox</mat-checkbox><br />
<input type="checkbox" /> normal checkbox
`
this.test2 = this.sanitizer.bypassSecurityTrustHtml(this.test);
我在 stackblitz 上创建了一个复制品:
https://stackblitz.com/edit/angular-hsjevo
我还需要根据类别创建复选框,并在每个子类别前附加一些额外的空格
即:
每个类别或子类别是<mat-checkbox value="$id"> $title
最佳答案
div 标签的 innerHTML 属性只能解析和渲染常规的 HTML 元素,如 input 等。要动态创建像 mat-checkbox 这样的 Angular 组件,你需要通知 Angular 这些组件。下面让我们看看如何做到这一点:
我们在 AppComponent 模板中需要一个占位符,我们可以在其中动态添加 mat-checkbox 组件。我们可以使用 <ng-template>
在这种情况下标记为占位符。
app.component.html
<mat-checkbox>mat-checkbox (static)</mat-checkbox> <hr />
dynamic angular component:<br/>
<ng-template #placeholder></ng-template>
在 AppComponent typescript 文件中,我们需要引用这个占位符并附加 mat-checkbox 组件。查找内联注释以进行解释。
app.component.ts
import {
Component,
ComponentFactoryResolver,
OnInit,
Renderer2,
ViewChild,
ViewContainerRef
} from '@angular/core';
import {MatCheckbox} from '@angular/material';
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
// Get reference to the ng-template placeholder tag
@ViewChild('placeholder', {read: ViewContainerRef, static: true}) placeholder: ViewContainerRef;
constructor(
private resolver: ComponentFactoryResolver,
private renderer: Renderer2) {}
ngOnInit() {
this.createComponent();
}
createComponent() {
// creating the mat-checkbox tag body content
let content = this.renderer.createText(' mat-checkbox (dynamic)');
// clear any previously appended element or component
this.placeholder.clear();
// resolve the MatCheckbox component and get the factory class to create the component dynamically
let factory = this.resolver.resolveComponentFactory(MatCheckbox);
// create the component and append to the placeholder in the template
let ref = this.placeholder.createComponent(factory);
// set the mat-checkbox body content
(ref.location.nativeElement as HTMLElement).appendChild(content);
}
}
为了让上面的代码工作,我们需要通知 Angular 我们希望在运行时解析 MatCheckbox 组件。在 app.module.ts 中进行以下更改。
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { MatCheckboxModule, MatCheckbox } from '@angular/material';
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
@NgModule({
imports: [ BrowserModule, FormsModule, MatCheckboxModule ],
declarations: [ AppComponent, HelloComponent ],
// Inform Angular about those components which will be created dynamically by including them in entryComponents field
entryComponents: [ MatCheckbox ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
现在您应该能够看到在运行时动态创建的 mat-checkbox。在此处查看完整示例 (https://stackblitz.com/edit/angular-e7vhue)
有关更多信息,请参阅此 article .
希望这对您的查询有所帮助。
关于angular - 动态插入垫复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264854/
我有一个 mat-select 元素,其中包含固定数量的 mat-option 元素。要查看最后一个元素,我必须滚动列表。是否可以扩大区域以便我无需滚动即可看到最后一个元素?
我想填充一些百分比值,以便小数位前始终有 3 个单位。使用整数我可以使用 '%03d' - 是否有等效的 float ? '%.3f' 适用于小数点后,但 '%03f' 什么都不做。 最佳答案 '%0
我有一个 vector Mat 文件,我想将它存储在 txt 文件中。每个 mat 文件的大小为 1x4500,我总共有 5000 个 vector 。我试图用上面的代码存储在 txtfile 中:
我需要一个 Mat 对象,其中每个元素都是一个类型为 double 且大小为 15 的 vector 。 我试过了 Mat seq(rownum,colnum,Vec); 但这给了我错误: expec
我想将我的 OpenCV Mat 转换为 Matlab .mat 文件,Matlab 可以轻松读取该文件。我不想使用Mex函数直接将数据提供给matlab,因为我想将数据保存在硬盘上。 有可用的 cv
我正在使用 当条件为真时,我希望有一些具有粗体样式的选项。 目前,下拉选项中的选项为粗体,但一旦选择该选项,该样式将不会应用于文本字段中的选择。 如何在选择后将样式应用于文本字段? 这是一个代码示例:
我在手机上运行我的应用程序,同时使用 MAT 进行调试。在我尝试在 Eclipse 中转储 HPROF 文件后,出现错误: 无法将 hprof 数据保存到临时文件中。设备上没有剩余空间。 我已经对此进
我有一个 CV_32F 类型的垫子 A 和一个二进制值为 0 和 255 的掩码 M。例如, A = [0.1 0.2; 0.3 0.4] M = [1 0 ; 0 0 ] 我想得到 A
我在我的 Angular 5 应用程序中使用@angular/material。我使用的 Angular Material 版本是 5.0.2。我正在使用@angular/animations 5.1
我想根据任意数据类型、行维度、列维度和 channel 维度的一维数据数组构建一个 3 channel 矩阵。在我的示例中,我有一个 1x12 double 组数据,我想将其转换为 2x2x3 Ope
我正在尝试使用 C# 中的 BouncycaSTLe 解密河豚加密字符串。 我能够轻松地加密和解密我自己的字符串,但不幸的是,我必须解密由另一个系统生成的字符串。 我能够使用以下命令使用 C#/Bou
我想在 Android Opencv c++ 库中获取绝对矩阵。我正在使用 abs(Mat m) 函数,但它会返回 MatExpr 对象。你知道如何只用矩阵的绝对值得到 Mat 对象吗? Ma
在 OpenCV 中,我可以将 RGB 1920 x 1080 垫乘以 3 x 3 垫以更改源垫的颜色组成。一旦我的源垫形状正确,我就可以使用“*”运算符来执行乘法。使用 cv::gpu::GpuMa
给定vector > A_STL , 我希望它被转换成 arma::mat A . 最佳答案 一种简单的方法是将 vector 矩阵的 vector 展平为一维 vector 。因此,您可以使用 ma
以下代码从文件中读取图像到 cv::Mat目的。 #include #include cv::Mat load_image(std::string img_path) { cv::Mat im
我有一个 AVCaptureSession,它输出带有 BGRA 像素的 CMSampleBuffer。我正在尝试仅从 BGR 创建 Mat 对象,以最有效的方式,使用数据 pointers。 CV
我正在尝试诊断我的 Android 应用程序中的内存问题。我转储了一个 HPROF 文件并将其加载到 Eclipse MAT 工具中(参见 How to analyze memory using an
我是一名优秀的程序员,十分优秀!