小编Nar*_*arm的帖子

如何在动态组件中使用反应形式

背景

我从包含HTML的服务器接收客户端生成的数据,然后我用它来创建一个动态组件,该组件将被注入并显示在我们的客户端中.我收到的HTML可以包含一个或多个我需要通过Angular Reactive Forms绑定的输入.

尝试1:

我试图通过简单地使用[innerHTML]属性并创建动态Reactive Forms来绑定到输入来解决此要求.但是,由于使用innerHTML属性的技术限制,该方法失败.一旦HTML在浏览器中呈现,所有属性都被强制为小写文本,因此任何Angular指令或属性都会失败.比如*ngIf, *ngFor, [formGroup], formControlName等...... Angular使用camelCase几乎所有东西,因此一旦它被强制为小写文本,它就会被忽略,这种方法不再是一个可行的解决方案.

尝试2:

这次我试图利用Angulars NgTemplateOutlet动态地将HTML添加到组件,然后创建并绑定到Reactive Form.这起初看起来似乎是一个很好的解决方案,但最终为了让html呈现它需要使用[innerHTML]属性,再次使这个方法无用(如我第一次尝试中所述).

尝试3:

最后我发现了动态组件,这个解决方案部分工作.我现在可以成功地创建一个格式良好的Angular HTML模板,该模板在浏览器中正确呈现.然而,这只解决了我的一半要求.此时HTML按预期显示,但我无法创建一个Reactive Form并绑定到输入.

问题

我现在有一个动态组件生成HTML,其中包含我需要通过创建一个Reactive Form来绑定的输入.

尝试4:

我尝试将所有逻辑用于在创建的动态组件中创建Reactive Form.

通过使用此方法,显示动态组件HTML,但是我收到一个新错误:"错误错误:formGroup需要一个FormGroup实例.请传入一个."

StackBlitz有错误的情况

angular angular-reactive-forms angular-dynamic-components

5
推荐指数
1
解决办法
2988
查看次数

Angular:使用“trackBy:index”是个好习惯吗?

在 ngFor 中使用 "trackBy: index" 是否是一个好习惯?

例如 :

<li *ngFor="let error of fileErrors.value; trackBy : index;"> {{error}} </li>
Run Code Online (Sandbox Code Playgroud)

在所有 *ngFor 中都需要使用 trackBy 以提高性能,否则我们可以忽略它。

如果我们忽略,那么默认情况下将使用什么迭代器实现?

iterator design-patterns angular

5
推荐指数
1
解决办法
494
查看次数

ngx-translate 即时翻译问题

我在 Angular(v6) 中使用 ngx-translate 和延迟加载方法。我面临一个问题translate.instant('Title')

使用翻译管道它工作正常。({{'Title' | translate}}

使用translate.instant()默认语言的方法始终有效,但我无法通过共享模块中的语言选择器(选择用于切换语言的组件)更改语言。

不想this.translate.onLangChange.subscribe每次都用,这个方法有没有替代方法?

ngx-translate angular angular6

5
推荐指数
1
解决办法
7055
查看次数

vue 显示和隐藏对象属性设计

我不知道如何正确提出这个问题,所以首先对糟糕的标题感到抱歉。

基本上,为了解释这个问题,我使用了我使用 vueJS 构建的 Web 应用程序的上下文。

在这个应用程序中,我有一个使用来自服务器的数据呈现的简单表,基本上我得到一个对象数组,每个对象都有一些属性,属性的范围并不重要。

现在我想在表中显示一些数据,如果某些属性不是来自服务器,我想隐藏表上的属性,但保持表的结构,缺少的属性应该有一个空桌子上的空间。

我是这样做的:

<div :style="{'visibility': computedValue}"></div>
Run Code Online (Sandbox Code Playgroud)

这个计算值基本上是一个计算属性,它返回可见性属性的“隐藏”或“显示”。

但这带来了一些问题;在计算属性上,我根据属性对象返回数据,例如:

company.createdAt可以是未定义的,如果我将可见性与:style.

我来自一个角度的环境,v-if并且v-show都有些不同,我知道,V-如果需要的元素出从DOM和V-节目不断,但在VUE,如果我做上面的例子中的V-表明它仍然可以作为v-if 渲染数据的工作方式就像数据从 DOM 中删除一样。

我只是想要空的空间,就像它仍然存在一样。

对此有任何帮助或解释吗?

javascript vue.js

4
推荐指数
1
解决办法
7391
查看次数

垫选择出现在页面底部

我在尝试显示 .txt 中包含的值列表时遇到问题<mat-select>。我在页面底部获取所有选项列表,而不是将它们显示在 的箭头旁边<mat-select>

在此输入图像描述

angular-material angular

4
推荐指数
1
解决办法
2357
查看次数

* ngFor为什么不需要括号?

我是Angular框架的新手,并且最近已将其介绍给attribute *ngFor=""

据我了解,它采用与JavaScript for()循环相同的参数...因此,*ngFor="let item of itemCollection"。但是,与其他指令相反,*ngFor它不需要[]将其视为代码。

该文档页面建议该hero属性需要[]围绕该属性,以便将该值视为代码,并返回的值"hero"

<app-hero-detail *ngFor="let hero of heroes" [hero]="hero"></app-hero-detail>
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?该*ngFor也评估,但不需要[]明显......这是不是*表示,该值必须始终作为代码或者什么被视为前缀?

angular-directive ngfor angular

4
推荐指数
1
解决办法
70
查看次数

更改结帐页面上的 WooCommerce 结帐错误文本

我想添加我自己的自定义付款错误文本(我们使用 Account Funds 并想添加一个额外的提示)

我如何更改,以下显示资金不足时,来自:

抱歉,您所在的州似乎没有可用的付款方式。如果您需要帮助或希望做出其他安排,请联系我们。

带有如下链接的错误消息:

您没有足够的资金来处理此订单,请<a href="/my-account">top up</a>或升级。谢谢你。

文本似乎存储在模板/结帐/payment.php

https://github.com/woocommerce/woocommerce/blob/ef05bfccfc01bb2c621ef1293e61f7c57950670f/templates/checkout/payment.php

如何更改它而不会被 Woocommerce 版本升级消灭?

php wordpress woocommerce hook-woocommerce

4
推荐指数
2
解决办法
3535
查看次数

Angular:来自 json 数据的树视图

我是角度新手。我想在 Angular 5 中创建一个可扩展的树。我尝试使用 Angular-tree-component 和 ngx-treeview。但他们的问题是他们需要一个特定格式的 json 。是否有任何库可以读取任何类型的 json 并创建可扩展树?或者我是否需要将 json 转换为该 npm 模块需要的格式?

我想做一些类似于Angular js 1 中提供的tree-grid-directive( http://khan4019.github.io/tree-grid-directive/test/treeGrid.html ) 的事情。

angular angular5

3
推荐指数
1
解决办法
2万
查看次数

角度:@input boolean 和 ngIf 不匹配

(抱歉我的英语,这不是我的母语...)

当我用它的模板调用它时,我在我的组件中注入的一些输入参数有一些问题。

滑块-multiple.component.ts :

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

@Component({
  selector: 'slider-multiple',
  templateUrl: './slider-multiple.component.html'
 })
export class SliderMultipleComponent  {
   @Input() public modifiable: boolean;
 }
Run Code Online (Sandbox Code Playgroud)

滑块-multiple.component.html :

<button *ngIf="modifiable">Slider Button</button>
Run Code Online (Sandbox Code Playgroud)

指令的调用(例如在 app.component.html 上):

<slider-multiple modifiable="activation"></slider-multiple>
Run Code Online (Sandbox Code Playgroud)

随着激活的app.component.ts定义:

export class AppComponent  {
   public activation : boolean = false ;

   public activate(){
     this.activation = !this.activation;
   }
 }
Run Code Online (Sandbox Code Playgroud)

只有当指令的激活参数为 true 时,我在组件的 html 模板上定义的按钮才应该可见(通过 *ngIf)。

有谁知道为什么它不能按预期工作?

一个Stackblitz来帮助。

提前致谢 !

javascript input typescript angular

3
推荐指数
1
解决办法
2088
查看次数

Enter 键按下的行为类似于 Angular 中的 Tab

我有一个 Angular 2+ 表单组,每个表单字段都有 tabIndex。

如何在每次按 Enter 键时将焦点更改到下一个表单字段(类似于按 Tab)?

JavaScript 参考 - Enter 按键的行为类似于 Javascript 中的 Tab

enter tabindex angular

3
推荐指数
1
解决办法
1万
查看次数