- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
应用程序出现以下错误。它在 filter.pipe.ts 中找不到 value
属性
我已经提供了所有的值,但它似乎仍然不起作用。我无法准确指出导致此错误的原因
ListComponent.html:11 ERROR TypeError: Cannot read property 'length' of undefined
at FilterPipe.webpackJsonp.../../../../../src/app/filter.pipe.ts.FilterPipe.transform (filter.pipe.ts:12)
at Object.eval [as updateDirectives] (ListComponent.html:16)
at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:13093)
at checkAndUpdateView (core.es5.js:12270)
at callViewAction (core.es5.js:12638)
at execComponentViewsAction (core.es5.js:12570)
at checkAndUpdateView (core.es5.js:12276)
at callViewAction (core.es5.js:12638)
at execEmbeddedViewsAction (core.es5.js:12596)
at checkAndUpdateView (core.es5.js:12271)
(filter.pipe.ts:12)>>>>>>
if (value.length === 0 || !filterString || !propName) {
(List.component.html:16)>>>>>>>
<li class="list-group-item" *ngFor="let person of personsList | filter:coursestat:'chosenCourse'">
//注册.component.ts
import { Component, OnInit, Input, ViewChild } from '@angular/core';
import { DropDownService } from '../services/drop-down.service';
import { IPersonModel } from '../interface/person-model';
import { InputDataService } from '../services/input-data.service';
// FormBuilder imported from anuglar/forms
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-registration',
templateUrl: './registration.component.html',
styleUrls: ['./registration.component.css'],
providers: [DropDownService, InputDataService]
})
export class RegistrationComponent implements OnInit {
courseForm: FormGroup;
personDetail: IPersonModel;
dropDownArr = [];
selectedOption = null;
personsList: IPersonModel[] = [];
courseStat = '';
constructor(public dropdown: DropDownService, public fieldData: InputDataService, private fb: FormBuilder) {
}
onSubmit(): void {
// adds the user submited data to personDetail object
this.personDetail.chosenCourse = this.selectedOption;
this.personDetail.name = this.courseForm.value.username;
this.personDetail.email = this.courseForm.value.email;
this.personDetail.address = this.courseForm.value.address;
this.personDetail.date = this.courseForm.value.date;
this.fieldData.setPersonData({ ...this.personDetail });
this.personsList.push({ ...this.personDetail });
console.log({ ...this.personDetail });
this.courseForm.reset();
console.log(this.personsList);
console.log(this.courseForm);
}
// resets the form on clicking the reset button
resetForm(): void {
this.courseForm.reset();
}
// sets the dropdownlist values on intialization
ngOnInit() {
// form controls validation specicified in the class for the Reactive Forms
this.courseForm = this.fb.group({
username: [null, [Validators.required, Validators.pattern(/^[a-z0-9_-]{3,16}$/)]],
email: [null, [Validators.required, Validators.pattern('([a-zA-Z0-9_.-]+)@([a-zA-Z0-9_.-]+)\\.([a-zA-Z]{2,5})')]],
address: [null, [Validators.required, Validators.minLength(10), Validators.maxLength(100)]],
date: [null, [Validators.required]],
select: [null, [Validators.required]]
});
this.dropDownArr = this.dropdown.getData();
// this.personDetail = {
// name: '',
// email: '',
// address: '',
// chosenCourse: ''
// };
this.personDetail = this.fieldData.getPersonData();
console.log(this.courseForm);
}
}
//注册.component.html
<!-- Form with three inputs and one dropdown which intializes with data from service on intialization and validates with min and maxlength-->
<section class="container">
<!-- ngSubmit calls the function onSubmit on submitting the form -->
<form class="form-horizontal" (ngSubmit)='onSubmit()' [formGroup]='courseForm'>
<div class="form-group">
<label for="inputUsername" class="col-sm-2 control-label">Username</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputUsername" placeholder="Username" formControlName="username" name="name"
[ngClass]="{inValid: !courseForm.get('username').valid && courseForm.get('username').touched, valid: courseForm.get('username').valid && courseForm.get('username').touched}">
<span class="help-block" *ngIf="!courseForm.get('username').valid && courseForm.get('username').touched">Please enter a valid username</span>
</div>
</div>
<!-- username input ends here -->
<div class="form-group">
<label for="inputEmail" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<!-- CSS class applied based on validation -->
<input type="email" class="form-control" id="inputEmail" placeholder="Email" formControlName="email" name="email" [ngClass]="{inValid: !courseForm.get('email').valid && courseForm.get('email').touched, valid: courseForm.get('email').valid && courseForm.get('email').touched}">
<span class="help-block" *ngIf="!courseForm.get('email').valid && courseForm.get('email').touched">Please Enter a valid email</span>
</div>
</div>
<!-- email input ends here -->
<div class="form-group">
<label for="inputAddress" class="col-sm-2 control-label">Address</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputAddress" placeholder="Your Address" formControlName="address" name="address"
[ngClass]="{inValid: !courseForm.get('address').valid && courseForm.get('address').touched, valid: courseForm.get('address').valid && courseForm.get('address').touched}">
<!--Display error message on MinLength and MaxLength Validation-->
<span class="help-block" *ngIf="courseForm.get('address')?.errors?.required && courseForm.get('address').touched">Please Enter Your Address</span>
<span class="help-block" *ngIf="(courseForm.get('address')?.errors?.minlength?.requiredLength !== courseForm.get('address')?.errors?.minlength?.actualLength) && courseForm.get('address')?.touched">Address should be at least 10 characters long</span>
</div>
</div>
<!-- address input ends here -->
<div class="form-group">
<label for="inputDate" class="col-sm-2 control-label">DOB</label>
<div class="col-sm-10">
<input type="date" class="form-control" id="inputDate" placeholder="DOB" formControlName="date" name="date" [ngClass]="{inValid: !courseForm.get('date').valid && courseForm.get('date').touched, valid: courseForm.get('date').valid && courseForm.get('date').touched}">
<!--Display error message on MinLength and MaxLength Validation-->
<span class="help-block" *ngIf="courseForm.get('date')?.errors?.required && courseForm.get('date').touched">Please Enter a valid Date-of-Birth</span>
<!-- <span class="help-block" *ngIf="(courseForm.get('date')?.errors?.minlength?.requiredLength !== courseForm.get('date')?.errors?.minlength?.actualLength) && courseForm.get('date')?.touched">Please enter a valid DOB</span> -->
</div>
</div>
<!-- date input ends here -->
<div class="form-group">
<label for="sel1" class="col-sm-2 control-label">Choose Course</label>
<div class="col-sm-10">
<select class="form-control" id="sel1" formControlName="select" [(ngModel)]="selectedOption" name="select" [ngClass]="{inValid: !courseForm.get('select').valid && courseForm.get('select').touched, valid: courseForm.get('select').valid && courseForm.get('select').touched}">
<option [value]="selectedOption" [disabled]="true">Choose Your Course</option>
<option *ngFor="let data of dropDownArr; index as i" [ngValue]="data.course">{{data.course}}</option>
</select>
<span class="help-block" *ngIf="!courseForm.get('select').valid && courseForm.get('select').touched">Please choose a Course</span>
</div>
</div>
<!-- select input ends here -->
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" [disabled]=!courseForm.valid>Submit</button>
<button type="button" class="btn btn-default" (click)="resetForm(f)">Reset</button>
</div>
</div>
<!-- submit and reset buttons ends here -->
</form>
<!-- form ends here -->
</section>
<app-list [coursestat]="courseStat" [personsList]="personsList"></app-list>
//列表.component.ts
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-list',
templateUrl: './list.component.html',
styleUrls: ['./list.component.css']
})
export class ListComponent implements OnInit {
@Input() coursestat: string;
@Input() personsList;
constructor() { }
ngOnInit() {
}
}
//列表.component.html
<section class="container">
<div class="panel panel-default">
<div class="panel-heading">Registered users</div>
<!-- search box input -->
<input type="text" [(ngModel)]='coursestat' size="40" placeholder="filter based on course: e.g Web Development">
<!-- List group -->
<ul class="list-group">
<!-- pipes transforms the username's first word by capitalize it-->
<li class="list-group-item" *ngFor="let person of personsList | filter:coursestat:'chosenCourse'">username: {{person.name | capitalize}} | email: {{person.email}}
| DOB: {{person.date | date: 'd/M/y'}} | Address:
{{person.address}} | Course Chosen: {{person.chosenCourse
| uppercase}}</li>
</ul>
</div>
</section>
//过滤器.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
// custom pipe which filters the personsList based on the courseChosen
@Pipe({
name: 'filter',
pure: false
})
export class FilterPipe implements PipeTransform {
transform(value: any, filterString: string, propName: string): any {
if (value.length === 0 || !filterString || !propName) {
return value;
}
return value.filter(_person => {
return _person[propName] === filterString;
});
}
}
最佳答案
正如上面评论中提到的 pankaj,您应该检查值数组是否存在,如果存在则检查长度。
if (value && value.length === 0 || !filterString || !propName) {
其次,当您应用过滤器时,您还需要检查该值是否包含其中的某些元素,添加一个条件来检查该值是否存在并且长度是否始终大于 0。
if(value && value.length > 0){
改变你的管道,filter.pipe.ts
export class FilterPipe implements PipeTransform {
transform(value: any, filterString: string, propName: string): any {
if (value && value.length === 0 || !filterString || !propName) {
return value;
}
if(value && value.length > 0){
return value.filter(_person => {
return _person[propName] === filterString;
});
}
}
}
关于angular - 添加路由后应用程序出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46623435/
我正在使用 node.js 和 mocha 单元测试,并且希望能够通过 npm 运行测试命令。当我在测试文件夹中运行 Mocha 测试时,测试运行成功。但是,当我运行 npm test 时,测试给出了
我的文本区域中有这些标签 ..... 我正在尝试使用 replaceAll() String 方法替换它们 text.replaceAll("", ""); text.replaceAll("", "
早上好,我是 ZXing 的新手,当我运行我的应用程序时出现以下错误: 异常Ljava/lang/NoClassDefFoundError;初始化 ICOM/google/zxing/client/a
我正在制作一些哈希函数。 它的源代码是... #include #include #include int m_hash(char *input, size_t in_length, char
我正在尝试使用 Spritekit 在 Swift 中编写游戏。目的是带着他的角色迎面而来的矩形逃跑。现在我在 SKPhysicsContactDelegate (didBegin ()) 方法中犯了
我正在尝试创建一个用于导入 CSV 文件的按钮,但出现此错误: actionPerformed(java.awt.event.ActionEvent) in cannot implement
请看下面的代码 public List getNames() { List names = new ArrayList(); try { createConnection(); Sta
我正在尝试添加一个事件以在“dealsArchive”表中创建一个条目,然后从“deals”表中删除该条目。它需要在特定时间执行。 这是我正在尝试使用的: DELIMITER $$ CREATE EV
我试图将两个存储过程的表结果存储到 phpmyadmin 例程窗口中的单个表中,这给了我 mariadb 语法错误。单独调用存储过程给出了结果。 存储过程代码 BEGIN CREATE TABLE t
我想在 videoview 中加载视频之前有一个进度条。但是我收到以下错误。我还添加了所有必要的导入。 我在 ANDROID 中使用 AIDE 这是我的代码 public class MainActi
我已经使用了 AsyncTask,但我不明白为什么在我的设备 (OS 4.0) 上测试时仍然出现错误。我的 apk 构建于 2.3.3 中。我想我把代码弄错了,但我不知道我的错误在哪里。任何人都请帮助
我在测试 friend 网站的安全性时,通过在 URL 末尾添加 ' 发现了 SQL 注入(inject)漏洞该网站是用zend框架构建的我遇到的问题是 MySQL -- 中的注释语法不起作用,因此页
我正在尝试使用堆栈溢出答案之一的交互式信息窗口。 链接如下: interactive infowindow 但是我在代码中使用 getMap() 时遇到错误。虽然我尝试使用 getMapAsync 但
当我编译以下代码时出现错误: The method addMouseListener(Player) is undefined for the type Player 代码: import java.
我是 Android 开发的初学者。我正在开发一个接收 MySql 数据然后将其保存在 SQLite 中的应用程序。 我将 Json 用于同步状态,以便我可以将未同步数据的数量显示为要同步的待处理数据
(这里是Hello world级别的自动化测试人员) 我正在尝试下载一个文件并将其重命名以便于查找。我收到一个错误....这是代码 @Test public void allDownload(
我只是在写另一个程序。并使用: while (cin) words.push_back(s); words是string的vector,s是string。 我的 RAM 使用量在 4 或 5
我是 AngularJS 的新手,我遇到了一个问题。我有一个带有提交按钮的页面,当我单击提交模式时必须打开并且来自 URL 的数据必须存在于模式中。现在,模式打开但它是空的并且没有从 URL 获取数据
我正在尝试读取一个文件(它可以包含任意数量的随机数字,但不会超过 500 个)并将其放入一个数组中。 稍后我将需要使用数组来做很多事情。 但到目前为止,这一小段代码给了我 no match for o
有些人在使用 make 命令进行编译时遇到了问题,所以我想我应该在这里尝试一下,我已经在以下操作系统的 ubuntu 32 位和挤压 64 位上尝试过 我克隆了 git 项目 https://gith
我是一名优秀的程序员,十分优秀!