- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我正在尝试进行评论表单验证,对于每个帖子都有评论框,例如 Facebook,但我无法将评论表单与带有 formControlName="comment"的 ngFor 索引绑定(bind),所以请任何人帮助我
我已经尝试了很多例子,但没有任何帮助。我是下面的代码,所以请仔细检查并帮助我。
<div class="container" style="width: 100%; height: 100%; ">
<div class="row" style=" margin: 1px; background-color: #fff; border: 2px solid #ada5a5; border-radius: 4px; ">
<!-- ngFor for posts -->
<div class="container" *ngFor="let post of posts; let i = index">
<!-- {{post.user_id}}, {{post.post_id}}, {{post.saved_name}}, {{ post.file_path}} -->
<div class="
row" style="border: 1px solid #e6e6e6;">
<div class="col-md-12 col-md-offset-0" style=" height: auto; ">
<h6> {{post.description}} </h6>
</div>
</div>
<div class="row">
<div class="col-md-12" style="display: block; ">
<form [formGroup]="commentForm" (ngSubmit)="comment_Submit(post.user_id, post.post_id,
commentForm )" name="commentForm{{i}}">
<div class="form-group">
<input type="text" class="form-control" name="comment{{i}}" formControlName="comment_{{i}}"
id="comment{{i}}" placeholder="Enter comments" spellcheck="true"
style="width:100%; height: auto; border: 1px solid #ada5a5; border-radius: 4px; outline: none; user-select: text; white-space: pre-wrap; overflow-wrap: break-word; "
[ngClass]="{'form-control': true,
'is-invalid': !f.comment.valid,
'is-valid':f.comment.valid}">
<!-- <span *ngIf="f.comment.errors?.required && f.comment.touched" class="text-danger">Field is required</span> -->
<div *ngIf="f.comment.errors?.minlength && (f.comment.dirty || f.comment.touched)"
class="alert alert-danger"> Comment should be at least 2 characters. </div>
</div>
<!--<textarea name="Text1" cols="40" rows="5"></textarea> (ngSubmit)="onSubmit(uploadForm)
<textarea name="comment" form="usrform">Enter text here...</textarea>
<textarea rows=3 class="form-control form-input" type="text" formControlName="question"></textarea>-->
<button type="submit" class="btn-sm btn-success" [disabled]="!commentForm.valid">Comment</button>
</form> <!---Form End-->
</div>
</div>
</div>
</div>
Typescript Code:
export class PostsComponent implements OnInit {
// Set server = 'localhost:3000/';
// apiUrl: string = 'localhost:3000';
users: User[];
user_id: string;
posts: Post[];
files: File[];
post_id: any;
saved_name = [];
tmp_files = [];
likes: Like[];
like_id: number | null ;
like_status: string;
postLikes: any;
comments: Comment[];
comment_text: string;
formsArr = [];
commentForm: FormGroup;
get f() { return this.commentForm.controls; }
constructor(private userService: UserService, private http: HttpClient, private formBuilder: FormBuilder, private router: Router,
private alerts: AlertsService) {
this.userService.getUser_id()
.subscribe(
data => {
this.user_id = data.toString();
this.getPosts(this.user_id);
this.getFiles(this.user_id);
this.get_likes();
this.getPostLikes(this.user_id);
this.get_comments();
// this.getPostsWithLikes();
},
error => this.router.navigate(['/login'])
// this.router.navigateByUrl('/login');
);
this.commentFormValidation();
}
ngOnInit() { }
commentFormValidation() {
// debugger
this.commentForm = this.formBuilder.group({
comment: ['', [Validators.required, Validators.minLength(2)] ]
});
}
// Get user details from DB
getPosts(user_id) {
this.userService.getPosts(user_id).subscribe((data) => {
this.posts = data;
},
error => {
return console.log(error);
}
);
}
通过使用上面的代码,当我触摸一个评论框时,我对每个评论框都进行了验证,但我只想对我触摸的特定评论框进行一次验证。
最佳答案
您需要为每个输入使用不同的 formControlName。
你可以使用任何你想要的作为 formControlName 。
我使用 formControlName ="comment"+ 'the id of the post' -> comment1,comment2...
这里是堆栈 Blitz : https://stackblitz.com/edit/angular-uteyji
所以你在 html 中需要这样的东西:
<form [formGroup]="commentForm">
<div class="form-group">
<input
type="text"
formControlName="comment{{post.post_id}}"
class="form-control"
[ngClass]="{
'form-control': true,
'is-invalid': !f.comment.valid,
'is-valid':f.comment.valid
}"
placeholder="Enter comments"
spellcheck="true">
<div *ngIf="checkForError(post)" class="alert alert-danger">
Comment should be at least 8 characters.
</div>
</div>
<button type="submit" class="btn-sm btn-success" [disabled]="!commentForm.valid">Comment</button>
</form>
组件会是这样的:
constructor(private http: HttpClient, private formBuilder: FormBuilder) {
this.comments = new Array<Comment>();
this.commentFormValidation();
}
ngOnInit() {}
commentFormValidation() {
this.commentForm = this.formBuilder.group({
comment: ['', [Validators.required, Validators.minLength(8)]]
});
let i=0;
this.posts.forEach(post => {
this.commentForm.addControl(
'comment' + String(post.post_id),
new FormControl(
this.comments[i++], [Validators.required, Validators.minLength(8)]
)
);
});
}
checkForError(post: any) {
const inputForm = this.commentForm.get('comment' + post.post_id);
if(inputForm.errors && (inputForm.dirty || inputForm.touched )) {
return true;
}
return false;
}
}
关于angular - 如何将 Angular 表单验证与 ngFor 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55946823/
我在 mongodb 中的玩家和锦标赛之间存在多对多关系。 我希望能够一次将许多玩家添加到锦标赛中。如果没有 ajax,这很简单,但我们有一个包含数千名玩家的数据库,因此表单选择变得巨大。 我们想为此
这个问题已经有答案了: When should I use html's and when spring's in Spring MVC web app? (3 个回答) 已关闭 6 年前。 我正
我正在 C++ Builder XE4 上使用 VCL。 我有以下组件。 FormMain 具有 TButton *B_select; FormSelect(或DialogSelect)具有 TCom
如何在不影响表单控件的情况下更改表单的 alphablend? 德尔福XE7 最佳答案 此问题的一个解决方案是使用多设备应用程序(如果无法使用VCL)。 如果您需要保留透明的TForm,只需更改属性T
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在尝试扩展 Django 注册以包含我自己的注册表单。原则上这是相当简单的。我只需要编写自己的表单( CustomRegistrationForm ),它是原始表单( RegistrationFo
我正在尝试为我的网站实现聊天功能。为了做到这一点,我遵循了以下教程:https://channels.readthedocs.io/en/latest/tutorial/ 然后我稍微更改了代码以实现它
有一个问题,我需要用一个 html 表单提交两个相互关联的模型表单。我知道如何提交两个单独的表格,但是在相关模型表格的情况下外键让我发疯。 问题是,第二个表单应该用外键填充字段到第一个表单的实例。 在
我正在创建一个工具,允许某人输入食谱,然后将其保存为 XML 文件,我已经创建了 XSD,但我想知道如何在我的网页上制作一个表单以允许用户输入他们的食谱并遵守模式。我一直在研究 Ajax 和 Jque
在 .net win 表单(如 asp.net web 表单)中是否有可用的验证控件? 因为很难为我的每个控件设置正确的条件,所以我的表单中也有很多重复的代码。 正确的做法是什么? 最佳答案 看看这个
我有一个简短的问题。我正在学习如何使用 javascript 制作注册表,发现此链接非常有用。 http://www.w3resource.com/javascript/form/javascript
我正在开发一个项目,该项目将使用循环将许多表单添加到 mysql 数据库中。在 javascript 部分中,我无法让 var i 在函数 updatesum() 中工作。有人可以帮我吗? 我试图避免
在我的应用程序上有一个包含 2 个字段和一个保存按钮的表单。 在我的 onClick 结束时我需要什么来将光标返回到第一个字段。 我有这个来清除它们 txtData.setText("
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
<input type="text" name="textfield" onKeyPress="javascript:alert(event.
我正在构建的网站有一个登录表单,作为所有其他模板扩展的 base.html 模板的一部分;因此,我需要以某种方式处理每个页面上的登录/注销逻辑。 目前每个页面都在单独的 View 中加载,那么实现它的
我有一个表单类,看起来像.. #forms.py class ExampleForm(forms.Form): color = forms.CharField(max_length=25)
有没有办法在表单定义中给表单一个特殊的错误渲染函数?在 customizing-the-error-list-format 下的文档中它展示了如何为表单提供特殊的错误呈现函数,但似乎您必须在实例化表单
我正在处理由多个页面组成的表单,我想解决验证问题。 当我点击提交按钮时,当前页面上的所有字段都会在下方显示错误消息,但是如果我更改页面,那么我需要再次点击提交,因为这些字段未设置为已触摸。 如果我可以
是否可以附加到继承表单的 exclude 或 widgets 变量? 到目前为止,我有以下设置。 class AddPropertyForm(forms.ModelForm): num_mon
我是一名优秀的程序员,十分优秀!