我是Angular JS的新手,我正在使用它的1.6版本.
我有这个apptest.js脚本:
var myApp = angular.module("myApp", []);
(function(){
"use strict";
myApp.controller("productController", function($scope, $http)
{
$http.get('data/data.json').then(function(prd)
{
$scope.prd = prd.data;
});
});
});
Run Code Online (Sandbox Code Playgroud)
在这里我的data/data.json数据:
[
{
"id":"1",
"title":"20 Foot Equipment Trailer",
"description":"2013 rainbow trailer 20 feet x 82 inch deck area, two 5,000 lb axels, electric brakes, two pull out ramps, break away box, spare tire.",
"price":6000,
"posted":"2015-10-24",
"contact": {
"name":"John Doe",
"phone":"(555) 555-5555",
"email":"johndoe@gmail.com"
},
"categories":[
"Vehicles",
"Parts and Accessories"
],
"image": "http://www.louisianasportsman.com/classifieds/pics/p1358549934434943.jpg",
"views":213
} …Run Code Online (Sandbox Code Playgroud) 有没有办法将反应式表单组重置为其初始值而不是使用.reset()方法将其清空?
我有以下stackblitz,其中默认选择的值为Parent,如果用户将其更改为姐妹,并希望将表单设置为初始值,请单击重置按钮来执行此操作。
目前,我尝试过:
this.formGroup.reset();
//Or
this.formGroup.markAsPristine;
//Or
this.formGroup.markAsTouched
Run Code Online (Sandbox Code Playgroud)
在.reset()完全地重置表单。
PS 有些人可能会说用户可以重新选择默认值而不是点击重置按钮。但就我而言,我有一个巨大的用户表单,他需要在其中更新他的信息,如果他在某些值中弄错了,他可能需要重置为初始值。
我在表单组上有此条件:
if((age>17 && (this.frType=="Infant"))
|| (age>40 && this.frType=="Grandchild")
|| (age<=5 &&
(this.frType!="Child"
|| this.frType!="Infant"
|| this.frType!="Grandchild" || this.frType!="Cousin")))
Run Code Online (Sandbox Code Playgroud)
它包含3个主要条件:
infantgrandchildchild,infant,grandchild或cousin。如果这些条件之一为真,我将发送一条错误消息。
我收到的错误是:
[ts]由于类型'“ Child”'和'“ Infant”'没有重叠,因此此条件将始终返回'true'。[2367]
在这部分if条件上:
|| this.frType!="Infant" || this.frType!="Grandchild" || this.frType!="Cousin")))
Run Code Online (Sandbox Code Playgroud)
我在其他组件中使用了确切的条件,并且没有显示错误。
if((age>17 && (this.family_relation_type=="Infant"))
|| (age>40 && this.family_relation_type=="Grandchild")
|| (age<=5 &&
(this.family_relation_type!="Child" ||
this.family_relation_type!="Infant" ||
this.family_relation_type!="Grandchild" ||
this.family_relation_type!="Cousin")))
Run Code Online (Sandbox Code Playgroud)
这是我在这两个部分中计算年龄的方式:
let timeDiff = Math.abs(Date.now() - this.formGroup.controls['dob'].value);
let age = Math.floor((timeDiff / (1000 * 3600 * …Run Code Online (Sandbox Code Playgroud) 我在我的数据库中创建 2 个表:
DROP TABLE IF EXISTS `med_pharmacy`;
CREATE TABLE IF NOT EXISTS `med_pharmacy` (
`med_pharmacy_id` int(11) NOT NULL AUTO_INCREMENT,
`med_id` int(11) NOT NULL,
`med_barcode` varchar(45) DEFAULT NULL,
`med_received` date DEFAULT NULL,
`med_expiry` date DEFAULT NULL,
`med_tablet` int(11) DEFAULT NULL,
`med_pill` int(11) DEFAULT NULL,
`clinic_id` varchar(45) DEFAULT NULL,
PRIMARY KEY (`med_pharmacy_id`),
KEY `fk_med_pharmacy_medication1_idx` (`med_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1261 DEFAULT CHARSET=utf8mb4;
Run Code Online (Sandbox Code Playgroud)
和:
DROP TABLE IF EXISTS `medication`;
CREATE TABLE `medication` (
`med_id` int(11) NOT NULL,
`med_name` varchar(75) NOT NULL,
`med_date_added` date DEFAULT …Run Code Online (Sandbox Code Playgroud) 我有一个div,我在其中显示的数组中有一些值,我可以添加更多.新添加的值将直接添加到div:
list = ['milk', 'sugar', 'flour'];
state = 'normal';
//@ViewChild('f') addForm: NgForm;
onAdd(item)
{
this.list.push(item);
//this.addForm.reset();
}
Run Code Online (Sandbox Code Playgroud)
我有这个简单的动画:
animations: [
trigger('divState', [
state('normal', style({
backgroundColor: 'red',
transform: 'translateX(0)'
})),
state('highlighted', style({
backgroundColor: 'blue',
transform: 'translateX(100px)'
})),
transition('normal=>highlighted', animate(300)),
transition('highlighted=>normal', animate(800))
])
]
Run Code Online (Sandbox Code Playgroud)
这适用于div,它将为其设置动画.
我真正需要的是将闪烁的红色应用于新添加的数组值,如闪存几毫秒.
所以,如果我有以下内容:
牛奶
糖
面粉
然后添加鸡蛋:
牛奶
糖
面粉
蛋
鸡蛋div应该闪烁.
我知道我应该处理索引,通过获取最后添加的索引并在其上应用动画:
<li
class="list-group-item"
*ngFor="let item of list; let i = index" >
{{ item }}
</li>
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
<li [@divState]="state"
class="list-group-item"
*ngFor="let item of list; let i …Run Code Online (Sandbox Code Playgroud) 我需要获取所选材料下拉列表的文本<mat-select>而不是其值:
<ng-container matColumnDef="fr">
<th mat-header-cell *matHeaderCellDef> Family Rel. </th>
<td mat-cell *matCellDef="let element; let i = index;">
<div [formGroupName]="i">
<mat-form-field color="warn" appearance="outline">
<mat-label>Family Relation</mat-label>
<mat-select #familyRelation (selectionChange)="onChange(element, i, 'hh')" id="family_relation"
formControlName="fr" placeholder="Family Relation">
<mat-option *ngFor="let familyRelation of familyRelationArray;" [value]="familyRelation.family_relation_id">
{{familyRelation.family_relation_type}}
</mat-option>
</mat-select>
</mat-form-field>
</div>
</td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试做的事情:
@ViewChild('familyRelation') familyRel: ElementRef;
Run Code Online (Sandbox Code Playgroud)
并在下拉列表的更改选择上:
onChange(data, i, type) {
let c = this.familyRel.nativeElement.innerText;
console.log(c)
}
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
错误TypeError:无法读取未定义的属性'innerText',位于
当我删除时innerText,控制台值为:
未定义
我需要什么,你可以在看stackblitz,如果我chosed Parent,我想Parent成为一个变量,而不是1这是它id。 …
是否可以将雪花上的暂存 csv 文件的标题放入数组中?
我需要循环所有字段以将数据插入到我们的数据仓库模型中,并且确实需要将这些列名称放入数组中。
我有以下问题。单击以检查堆栈闪电。
我在构造函数中设置了反应形式:
this.formGroup = this.fb.group({
'family_name_en': new FormControl('', Validators.required),
'family_name_ar': new FormControl('', [Validators.required, Validators.pattern('[\u0600-\u06FF ]*')]),
'unit_id': new FormControl({ value: '', disabled: true }, [Validators.required])
});
Run Code Online (Sandbox Code Playgroud)
而且ngOnInti(),我正在获取与关联的数据unit_id。
当我将数据从平台迁移到另一个平台时,不建议使用阿拉伯语的姓氏,但现在是这样。因此,大多数数据将不使用阿拉伯文名称加载。
问题是该按钮始终处于启用状态,而我需要做的是,如果用户要更新此unit_id按钮,则他应该添加阿拉伯语名称,以便随后启用该按钮。
如果表单有效,则启用按钮在加载组件时不会造成伤害。
这是getData()获取数据并设置表单组控件值的方法:
ngOnInit() {
this.getDataById();
}
Run Code Online (Sandbox Code Playgroud)
getDataById():
getDataById() {
this.showSpinner = true;
this.auth.getDataById(this.unit_id).subscribe(
(data) => {
if (data['info'][0]['total'] == 1) {
this.noDataBool = false;
this.showSpinner = false;
this.family_name_en = data['info'][0]['hh_last_name_en'];
this.formGroup.controls['family_name_en'].setValue(this.family_name_en);
this.family_name_ar = data['info'][0]['hh_last_name_ar'];
this.formGroup.controls['family_name_ar'].setValue(this.family_name_ar);
this.unit_id = data['info'][0]['unit_id'];
this.formGroup.controls['unit_id '].setValue(this.unit_id);
}
} …Run Code Online (Sandbox Code Playgroud) 我试图使用堆栈上这个答案ngOninit()中的以下内容来获取组件完全加载到 dom 中所需的时间:
ngOnInit()
{
var time = window.performance.timing.domContentLoadedEventEnd-window.performance.timing.navigationStart
console.log(time)
}
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
-1544706869570
我用了ngAfterViewInit():
ngAfterViewInit(){
var time = window.performance.timing.domContentLoadedEventEnd-window.performance.timing.navigationStart
console.log(time)
}
Run Code Online (Sandbox Code Playgroud)
结果是一样的。
如何将其转换为秒,是否有更好的解决方案来计算角度 7 中的组件负载?
将材质模块导入 Angular 8 项目的最佳方法是什么?是通过将material.module.ts导入到app主模块然后在其他模块中使用它:
import { NgModule } from '@angular/core';
import {
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
} from '@angular/material';
@NgModule({
imports: [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
],
exports: [
MatButtonModule,
MatMenuModule,
MatToolbarModule,
MatIconModule,
MatCardModule
]
})
export class MaterialModule {}
Run Code Online (Sandbox Code Playgroud)
还是直接导入各个模块中主要用到的材质模块?
例如,如果我只使用mat-cardin ProductsModule,我只需导入MatCardModule产品模块并完成它。
angular ×7
angular7 ×4
angular6 ×1
angular8 ×1
angularjs ×1
animation ×1
javascript ×1
mysql ×1
performance ×1
phpmyadmin ×1
snowflake-cloud-data-platform ×1
sql ×1
typescript ×1
wampserver ×1