我有一个FormGroup
如下定义:
this.businessFormGroup: this.fb.group({
'businessType': ['', Validators.required],
'description': ['', Validators.compose([Validators.required, Validators.maxLength(200)])],
'income': ['']
})
Run Code Online (Sandbox Code Playgroud)
现在,当businessType
是Other
,我想删除Validators.required
的验证description
.如果businessType
不是Other
,我想加回来Validators.required
.
我使用以下代码动态添加/删除Validators.required
.但是,它会清除现有的Validators.maxLength
验证程序.
if(this.businessFormGroup.get('businessType').value !== 'Other'){
this.businessFormGroup.get('description').validator = <any>Validators.compose([Validators.required]);
} else {
this.businessFormGroup.get('description').clearValidators();
}
this.businessFormGroup.get('description').updateValueAndValidity();
Run Code Online (Sandbox Code Playgroud)
我的问题是,在添加/删除required
验证器时如何保留现有的验证器.
在我的应用程序有一个SupportModule
有3个子模块(AdminModule
,ChatModule
,ContactModule
).SupportModule
它的3个子模块有自己的路由定义.
结构看起来像
"AdminModule"的路由如下:
import { AdminComponent } from './admin.component';
import { RssFeedsComponent } from './rssFeeds.component';
import { RssFeedDetailComponent } from './rssFeedDetail.component';
export const adminRoutes: Route =
{
path: 'admin',
component: AdminComponent,
children: [
{ path: '', component: RssFeedsComponent },
{ path: 'feeds', component: RssFeedsComponent },
{ path: 'feeddetail', component: RssFeedDetailComponent }
]
};
Run Code Online (Sandbox Code Playgroud)
和路由SupportModule
(这是3个子模块的父模块)如下:
import { SupportComponent } from './support.component';
import { SupportNavComponent } from './support-nav.component';
//Feature Modules …
Run Code Online (Sandbox Code Playgroud) 我最近在Windows 8.1机器上安装了JDK8 + Netbeans8(从Oracle站点下载了捆绑的安装程序).
当我创建一个非常简单的JavaFX FXML应用程序时,它工作正常.但是,当我使用向导添加一个新的数据库实体类并编译它时,我得到以下堆栈跟踪:
Note: Creating non-static metadata factory ...
error: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for sun.util.logging.PlatformLogger not found
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for sun.util.logging.PlatformLogger not found
at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:407)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1173)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:859)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java:56)
at …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的组件,它在一个form
元素中包含两个输入字段.单击提交按钮,它将调用addUser
组件上的函数.
组件模板如下:
<div>
<form [formGroup]="signupForm" (submit)="addUser($event)" role="form" class="form-horizontal">
<label>Firstname:</label>
<input type="text" formControlName="firstName">
<label>Lastname:</label>
<input type="text" formControlName="lastName">
<input type="submit" id="btnSubmit" class="btn btn-primary btn-lg" value="Register" />
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
组件定义如下:
@Component({
moduleId: module.id,
templateUrl: 'user.component.html'
})
export class UserComponent {
registered = false;
constructor(
private router: Router,
private fb: FormBuilder,
public authService: AuthService) {
this.signupForm = this.fb.group({
'firstName': ['', Validators.required],
'lastName': ['', Validators.required]
});
}
addUser(event: any) {
event.preventDefault();
this.addUserInvoked = true;
......
......
this.authService.register(this.signupForm.value)
.subscribe(
(res: Response) => …
Run Code Online (Sandbox Code Playgroud) 我正在使用 angular rc4 版本来编写一个应用程序,在该应用程序中我必须强加一些验证规则来形成组件,例如required
,minlength
以及一些自定义验证器emailValidator
。
当我将一个内置验证器和一个自定义验证器传递给该Validators.compose
函数时,IDE(Webstorm 和 VS Code)向我显示编译时错误消息,如下所示:
但是,您可以在上面的屏幕截图中看到,如果内置了两个验证器,则没有错误消息。
我的自定义验证器的定义如下:
static emailValidator(control: AbstractControl): {[key: string]: boolean} {
if (control.value.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/)) {
return null;
} else {
return {'invalidEmailAddress': true };
}
}
Run Code Online (Sandbox Code Playgroud) 我编写了一个自定义表单控件,它实际上是组件的包装器p-calendar
。组件定义如下所示(注意:-我删除了一些代码以使其简单)
export class MyDatePickerComponent implements ControlValueAccessor, OnInit, OnChanges {
@Input() _myDate : Date;
@Input() control: FormControl;
@Input() dateFormat: string;
@Output() myDateChange : EventEmitter<Date> = new EventEmitter<Date>();
propagateChange: any = () => {};
validateFn:any;
get myDate(){
return this._myDate;
}
set myDate(val){
this._myDate = val;
this.propagateChange(this._myDate);
}
constructor() { }
//OnInit Implementation
ngOnInit() {
this.validateFn = (c: FormControl) => {
if (c.value == null) {
return null;
}
let dateErr = { invalidDate: { valid: false } };
let userDate …
Run Code Online (Sandbox Code Playgroud) 我有一个返回的服务功能,Observable
我正在我的一个组件中使用该服务.我已经使用此处发布的技术为组件编写了单元测试.然而,奇怪的是我得到了"无法读取未定义的属性'订阅'".
被测组件:
@Component({
moduleId: module.id,
templateUrl: 'signup.component.html'
})
export class SignupComponent implements OnInit {
signupForm: FormGroup;
submitted = false;
registered = false;
constructor(public router: Router, private fb: FormBuilder, public authService: AuthService) {
this.signupForm = this.fb.group({
'firstName': ['', Validators.required],
'lastName': ['', Validators.required],
'email': ['', Validators.compose([Validators.required])],
'password': ['', Validators.compose([Validators.required])],
'confirmPassword': ['', Validators.required]
});
}
ngOnInit() {
}
signup(event: any) {
event.preventDefault();
this.submitted = true;
if (!this.signupForm.valid) return;
this.authService.register(this.signupForm.value)
.subscribe(
(res: Response) => {
if (res.ok) {
this.registered = …
Run Code Online (Sandbox Code Playgroud) 我有一个示例 Angular 组件模板,如下所示:
<div style="border-bottom: 1px solid lightgray;">
<br>
<div class="row">
<div class="col-md-2 text-center">
<a (click)="downloadFile()" class="download-file"><i class="fa fa-download fa-fw"></i> Download</a>
</div>
<div class="col-md-1 text-center">
<i [ngClass]="getFileIconClass"></i>
</div>
<div class="col-md-9">
<div class="row">
<div class="col-md-1"><strong>Name</strong></div>
<div class="col-md-3">
<span>{{attachment.fileName}}</span>
</div>
</div>
<div class="row">
<div class="col-md-1"><strong>Notes</strong></div>
<div class="col-md-11">
<span>{{attachment.notes}}</span>
</div>
</div>
</div>
</div>
<br>
</div>
Run Code Online (Sandbox Code Playgroud)
我必须编写一个单元测试来检查是否Name
包含Notes
在对象中传递的正确值attachment
。
为此,我必须HTMLElement
从 DOM 获取 s。我需要知道HTMLElement
在这种情况下最好的做法是什么。我是否应该为每个属性定义一个特定的 Id/Class 属性span
,例如:
...
<span class="fileName">{{attachment.fileName}}</span>
...
<span class="notes">{{attachment.notes}}</span>
...
Run Code Online (Sandbox Code Playgroud)
并得到HTMLElement
像: …
可能重复:
建议使用什么Web应用程序框架?
我们有一个使用Citrix托管的Delphi 2007桌面应用程序.现在我们想摆脱Citrix并以某种方式通过网络启用它.
我做了一些研究,发现可以使用uniGUI.
结论:可以完成,但需要重写,并且只支持一部分组件.严肃的问题仍然是Web环境中的单一应用程序结构.
还有两个选项morfik和atozed,他们还需要重写.
我想知道是否有任何其他选项需要更少的重写工作以及它有多脆弱?
请有人帮助我.
我正在阅读Josh Juneau撰写的Java EE 7书籍"Java EE 7 Recipes".我试图从第3章(配方3.5)运行一些示例代码来测试条件导航.代码非常简单明了,但不幸的是我的行为很奇怪.
JSF页面脚本如下:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Login Test</title>
</h:head>
<h:body>
<h:form id="resourceTest">
<h1>Login</h1>
<h:commandButton id="loginButton" action="#{loginTest.login}" value="Login" />
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
和JSF Managed Bean:
package com.test.controller;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class LoginTest {
private boolean authenticated;
public LoginTest() {
authenticated = false;
}
public boolean isAuthenticated() {
return authenticated;
}
public void setAuthenticated(boolean authenticated) {
this.authenticated = authenticated;
} …
Run Code Online (Sandbox Code Playgroud) 简短的说明,
我在.net中的技巧被称为"创新",但我更希望它是典型的.基本上,我需要一位导师.我拥有域名codeologist.com,我将不辜负这个名字,但为了做到这一点,我需要一个导师和社区.
关于问题:
实体框架 - 我想这是一个强大的框架,它映射工厂中的对象,同时保留系统内对象的完整性和状态.至少,这就是我听过的播客大约15分钟时所能听到的.RTFM我知道,但这是一个正确的一般评估?
企业图书馆 - 杀手.至少使用大多数块作为示例应用程序.
领域驱动设计 - 从ERD/ORM的思考到域驱动设计有哪些技巧?优点与缺点?
敏捷与SCRUM - 真的有区别吗?
单元测试 - 我想到的最后一件事.无法正确获得自动化web ui测试设置,还需要有关VSS 2005存储库中的NAnt/MSBuild脚本的帮助.源代码中的完整示例非常好,可能包括调度.
绝对必要的TSQL - 什么被认为是企业发展的最低专业级TSQL语句?像ROWCOUNT,TRANSACTION,ROLLBACK,流控制语句,CRUD方法的内联sql和安全性问题.
可以想象集成MVC2/3,实体框架,企业库和SilverLight Web前端?甚至可能是Sharepoint?
我问了一个我见过的人,我应该什么时候使用Linq,他的回答是"总是使用武力".
在学习新语言时,您会编写哪些游戏/应用程序?那些即将编码的人有哪些好的练习?(我们向您致敬!)
您会为通用编程理论,企业架构和业务分析推荐哪些书籍?
好吧,可能没有人会回应,但这些都是我内心深处的问题,我不得不把这一切都拿出来.
生活的极客.
angular ×7
agile ×1
c#-4.0 ×1
delphi ×1
delphi-2007 ×1
jasmine ×1
java ×1
javafx-8 ×1
jsf-2 ×1
jsf-2.2 ×1
navigation ×1
netbeans ×1
netbeans-8 ×1
primeng ×1
unit-testing ×1