我使用FormBuilder创建了一个ControlGroup .theForm
当我尝试更新这样的控件的值时
this.theForm.find('MainImageId').updateValue( id, true, true);
它工作正常,但WebStorm显示错误说
Error:(148, 24) TS2339: Property 'updateValue' does not exist on type 'AbstractControl'.
我究竟做错了什么?为什么它有效?
嗯...在角度1.xy是
angular.module('myApp', []).directive('myDirective', function(){
return {
templateUrl : function(tElement, iAttrs){
return 'http://' + iAttrs.myDirective // More...
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是......在Angular2中
@Component({
selector: 'my-Directive',
templateUrl: 'http://???'
})
class HelloWorld {
}
Run Code Online (Sandbox Code Playgroud)
好吧,在医生说只有一个String
.因为它被处理为angular2中的函数?
我有一个Angular2表单字段.我想要求输入的值不存在.我的组件通过@Input参数接收现有值的数组.我的组件中有一个自定义验证器函数codeUnique(),但是当它被执行时,它无法访问实例成员."this"返回FormControl或undefined.我的验证器函数已被吸入外部空间,剥离了它的上下文和实例变量.如何将现有值列表添加到验证器中?我可以把它们放在全球范围内,恐怖吗?
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { NG_VALIDATORS, FormControl, FormBuilder, FormGroup, Validators, AbstractControl } from '@angular/forms';
import { ReferringAppModel } from './referringapp.model';
//import { CodeValidator } from './code-validator';
@Component({
selector: 'add-client-form',
templateUrl: 'src/home/add-client-form.component.html'
})
export class AddClientFormComponent {
myForm: FormGroup;
code: AbstractControl;
name: AbstractControl;
constructor(fb: FormBuilder) {
this.myForm = fb.group({
'code': ['', this.codeUnique],
'name': ['', Validators.required]
});
this.code = this.myForm.controls['code'];
this.name = this.myForm.controls['name'];
}
@Input() referringApps: ReferringAppModel[];
ngOnInit() {
}
onSubmit(form: any): void {
console.log("submitted") …
Run Code Online (Sandbox Code Playgroud) 我正在使用Angular 2.0.1。
我有一个可以通过其他任何组件使用的组件<ng-content>
-效果很好。
我遇到的问题是当我想引用注入的组件时。
如果我知道那<ng-content>
将永远只是一个组件,我可以说:
@ContentChild(MyComponent) dynamicTarget: IMyComponent;
但是因为它可以是任何组件(我要做出的唯一假设是任何注入的组件都实现了特定的接口),所以变得棘手。
我也尝试过<ng-content #dynamicTarget'>
,然后通过说来引用它, @ContentChild('dynamicTarget') dynamicTarget: IMyComponent;
但这返回未定义。
有谁知道我该如何告诉Angular 2这个东西是组件的实例,以便我可以尝试在其上调用函数?
为了进一步阐明用例,我有一个多步骤向导,可以将任何组件作为内容,并且我想validate
在内容上调用该函数(同样,我会假设在上述实例中存在该函数)
Q1.是否有可能有一个控件,即:
ValidNumber = new Control('', CustomValidators.number({min:1, max:10}))
Run Code Online (Sandbox Code Playgroud)
验证input
模板中所有类似的字段类型?
Q2.这些字段可以由ngFor
?生成?
FailedMethod 1:验证有效但值已耦合.
<input [ngFormControl]="ValidNumber" name="num1" type="number"/>
<input [ngFormControl]="ValidNumber" name="num2" type="number"/>
Run Code Online (Sandbox Code Playgroud)
FailedMethod 2:使用formBuilder,它与上面相同.
<form [ngFormModel]="formBuiltWithFormBuilder">
<input ngControl="ValidNumber" name="num1" type="number"/>
<input ngControl="ValidNumber" name="num2" type="number"/>
</from>
Run Code Online (Sandbox Code Playgroud)
客观澄清:
我正在尝试验证可能使用ngFor生成的表单字段,并且需要类似的验证.
没有在别处重复定义类似的控件
我可以使用任何其他方法提取的值,#form="ngForm"
或者ngModel
,我想要的ngControl
是验证.
有时我必须去DOM event listners
,从那以后
我比较熟悉,querySelector
我可以更轻松地使用它.
但我想知道提供什么ElementRef
以及哪一个更好.
假设我有一个用 TypeScript 编写的类,如下所示:
class Messenger {
x = 10;
constructor(){
this.y = 20;
}
};
Run Code Online (Sandbox Code Playgroud)
JavaScript 版本将如下所示:
var Messenger = (function () {
function Messenger() {
this.x = 10;
this.y = 20;
}
return Messenger;
}());
;
Run Code Online (Sandbox Code Playgroud)
x 和 y 变量在 JavaScript 中被编译为相同的东西,那么这里有什么区别呢?
谢谢。
我有一个带有一些<input type="text">
小部件的表单,我注意到ControlGroup.valueChanges
在使用[ngFormModel]
和时正在调用初始数据绑定ngControl
.
这意味着用户认为表单在初始加载时已更改.
这是正常的还是我应该使用不同的observable来跟踪用户所做的更改?
我正在使用Angular2 RC3和以下版本导入表单:
import {ControlGroup, Validators, FormBuilder} from '@angular/common';
Run Code Online (Sandbox Code Playgroud) 当我在Hero.service.ts中使用get url作为web api时,在浏览器控制台中出现以下错误.但是当我在一个项目中使用.Json文件时它工作正常,因为我能够在输出页面中看到值.我刚刚在angular.io网站上学习.
以下是控制台中的错误:
angular2-polyfills.js:471 Error: Uncaught (in promise): EXCEPTION: Error: unable to parse url 'http://md5.jsontest.com/?text=example_text'; original error: Cannot read property 'split' of undefined in [null](…)consoleError @ angular2-polyfills.js:471
Get url: http://md5.jsontest.com/?text=example_text
Run Code Online (Sandbox Code Playgroud)
这是完整的代码,
你能帮我解决一下我在做错的事吗?
angular ×8
typescript ×7
dynamic ×1
forms ×1
function ×1
http-get ×1
javascript ×1
observable ×1
templates ×1
webstorm ×1