我正在 Angular8 中使用 Material 表构建一个表。
我使用一个字符串数组来定义 displayColumns 并将每个数组值传递给 matColumnDef 指令。
这是正常工作。
TS
displayedColumns: any[] = ['username', 'firstname', 'lastname'];
Run Code Online (Sandbox Code Playgroud)
HTML
<div class="table-container mat-elevation-z8">
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">
<ng-container *ngFor="let column of displayedColumns;" [matColumnDef]="column">
<th mat-header-cell *matHeaderCellDef> {{ column }} </th>
<td mat-cell *matCellDef="let element"> {{ element[column] }} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
问题:是否可以将 displayColumns 定义为对象数组而不是字符串数组?
我想为列显示值设置不同的值,还可能有条件地设置一些其他列属性。
示例:注意displayColumns 是一个对象数组。这不起作用。
TS
displayedColumns: any[] = [
{ name: 'username', display: 'User Name' },
{ name: 'firstname', …Run Code Online (Sandbox Code Playgroud) 我正在 NodeJS 中使用 Express、Angular JS 和 Google App-Engine 数据存储构建一个 Web 应用程序。
我正在学习节点。我创建了一个在插入数据库之前“清理”(转义)用户输入的表单。我按照 MDN 网站上的 NodeJS 教程创建了以下代码:
//Trim and escape all inputs
req.sanitize('requester').escape();
req.sanitize('requester').trim();
req.sanitize('dataowner').escape();
req.sanitize('dataowner').trim();
req.sanitize('requested_filepath_list').escape();
req.sanitize('requested_filepath_list').trim();
Run Code Online (Sandbox Code Playgroud)
“requested_filepath_list”是 UNIX 文件路径的列表。
因此,当用户提交请求时,它会以“转义”格式存储在数据库中。
//Escaped data
/top/example/test123.txt
Run Code Online (Sandbox Code Playgroud)
问题:如何“转义”数据以用于显示目的?
//Desired output
/top/example/test123.txt
Run Code Online (Sandbox Code Playgroud)
我尝试了 unescape 函数,但它似乎不起作用,它只是返回相同的输出。
let escape_str = '/top/example/test123.txt';
let unescaped_str = unescape(escape_str);
console.log('unescaped_str: ' + unescaped_str);
//Output
unescaped_str: /top/example/test123.txt
//Desired output
/top/example/test123.txt
Run Code Online (Sandbox Code Playgroud) 我有一个在本地机器 (Mac OSX 10.11.6) 上运行的本地数据存储模拟器实例。
我已经有一堆数据,但我想从本地数据库中删除所有数据,以从头开始。
但是,我已经尝试删除正在存储数据的目录(我认为的位置)。
启动模拟器时会出现此消息。
WARNING: Reusing existing data in [/Users/myusername/.config/gcloud/emulators/datastore].
Run Code Online (Sandbox Code Playgroud)
我删除了整个数据存储目录,当模拟器重新启动时,它似乎可以正确重新生成。但是,旧数据仍然存在。
rm -rf /Users/myusername/.config/gcloud/emulators/datastore
Run Code Online (Sandbox Code Playgroud)
我还确认我的 Node App 正在连接到本地模拟器。
myusername$ $(gcloud beta emulators datastore env-init)
myusername$ gcloud beta emulators datastore env-init
export DATASTORE_DATASET=projectname
export DATASTORE_EMULATOR_HOST=localhost:8081
export DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore
export DATASTORE_HOST=http://localhost:8081
export DATASTORE_PROJECT_ID=projectname
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个执行以下操作的python脚本:
我的代码正在解析CSV文件并将其转换为JSON对象.
但是,当它导入到远程服务器时,只写入第一行.
问题:我是否需要循环并为每个行发送一个SEPARATE http请求?我觉得那太麻烦了.我的CSV文件有超过10,000行,这将在每日cron上运行.
问题:如何将其设置为在单个请求中导入所有行?
#Requests package for python import requests
import csv
import json
import requests
#Parse CSV file and convert to JSON
f = open('example_import_csv.csv', 'rU')
reader = csv.DictReader(f, fieldnames = ("u_date","u_product","u_serial_number"))
out = json.dumps([row for row in reader])
#Print output confirms that the JSON is formatted properly
print(">JSON" , out)
#Set request parameters
url = 'xxxxx'
user = 'xxxxxx'
pwd = 'xxxxxx'
#Set proper headers
headers = {"Content-Type":"application/json","Accept":"application/json"}
#data=out contains the JSON object …Run Code Online (Sandbox Code Playgroud) I am building a new NodeJS application with MySQL. I need to use the existing database schema. I have a mysql dump file that is loaded into the database (in a docker container). I am trying to generate models and migrations automatically and then run the migrations successfully. I am able to generate the models and migrations, however there is a SQL syntax error when running the generated migrations.
Here are the relevant versions:
Node10-alpine
"mysql": "^2.17.1",
"mysql2": "^1.6.5",
"sequelize": …Run Code Online (Sandbox Code Playgroud) 我有一个带有文本输入控件的 mat-form-field。我有一个 mat-label 并且我还attr.aria-label直接在 input 元素上放置了一个 aria-label 属性。
是mat-label足以本身屏幕阅读器?是attr.aria-label必要的还是多余的?
<mat-form-field appearance="outline" floatLabel="always">
<mat-label>Username</mat-label>
<input attr.aria-label="Username" formControlName="Username" matInput>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)
同样的问题也适用于 mat-select 控件。
<mat-form-field appearance="outline" floatLabel="always">
<mat-label>Cars</mat-label>
<mat-select formControlName="Car">
<mat-option *ngFor="let car of cars" [value]="car.name">
{{car.name}}
</mat-option>
</mat-select>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud) 我正在 Angular 8 中使用 Material 和 Reactive Forms 构建一个应用程序。我有一个包含 ItemID、Title 和 Description 字段的反应式表单。
ItemID 字段旁边有一个搜索按钮,用于发送 HTTP 请求以从外部 API 获取数据。这一切正常。但是,在单击搜索按钮并返回响应后,验证会以红色突出显示 Title 和 Description 字段,即使这些字段尚未被触及并且是原始的。由于尚未触及这些字段,因此不应以红色突出显示它们。
下面是应用于窗体控件的类,当它以红色突出显示时,即使它仍然没有被触及和原始。
mat-form-field ng-tns-c9-58 mat-primary mat-form-field-type-mat-input mat-form-field-appearance-outline mat-form-field-can-float mat-form-field-should-float mat-form-field-has-label ng-untouched ng-pristine ng-invalid mat-form-field-invalid
Run Code Online (Sandbox Code Playgroud)
TS组件
constructor(
private fb: FormBuilder
) { }
// Initialize Item Detail form
this.itemDetailForm = this.fb.group({
Item: this.fb.group({
ItemID: [null],
}),
Title: [null, Validators.compose([
Validators.required,
Validators.maxLength(10),
])],
Description: [null, Validators.compose([
Validators.required,
Validators.maxLength(10),
});
Run Code Online (Sandbox Code Playgroud)
HTML 组件
<form [formGroup]="itemDetailForm" (ngSubmit)="onSubmit()">
<div formGroupName="Item">
<mat-form-field appearance="outline" floatLabel="always">
<mat-label>Item …Run Code Online (Sandbox Code Playgroud) 我正在使用 ServiceNow,需要验证一个文本框,该文本框将接受以逗号分隔的电子邮件地址列表。
电子邮件地址列表位于变量中group_members。
验证仅适用于第一个电子邮件地址。尽管我已经使用有效地址列表进行了测试,但列表中的第二个电子邮件地址显示为无效。例如:
Testa@example.com, testb@example.com
testa将显示为有效,但testb将无效。我知道这不是正则表达式,因为只要它是列表中的第一个,相同的电子邮件地址就会返回有效。我认为循环数组有问题,或者逗号分隔列表被分割到数组的方式可能有问题。
你能检查一下我的逻辑,看看哪里出了问题吗?
var group_members = g_form.getValue('u_group_members');
var member_split = group_members.split(',');
for (var n = 0; n < member_split.length; n++) {
var member_info = member_split[n];
var validRegExp = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if (member_info.search(validRegExp) == -1) {
g_form.showFieldMsg('u_group_members', "Group Members contains an invalid email address. " , 'error');
}
else if (member_info.search(validRegExp) == 0) {
g_form.showFieldMsg('u_group_members', "Group Members email addresses are valid");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用带有数据存储数据库的Google App Engine上的NodeJS。
我正在使用复合查询过滤器,只需要一个基本的“或”条件。
示例:查询任务具有完成=假或优先级= 4
const query = datastore.createQuery('Task')
.filter('done', '=', false) //How to make this an OR condition?
.filter('priority', '=', 4);
Run Code Online (Sandbox Code Playgroud)
但是,根据文档:
Cloud Datastore当前仅本地支持将过滤器与AND运算符组合在一起。
在不运行两个完全独立的查询然后合并结果的情况下,实现基本OR条件的好方法是什么?
更新
我在另一篇文章中详细描述了我的解决方案。由于我仍在学习NodeJS,因此对解决方案改进的任何反馈将不胜感激。
我在客户端的Angular 8和NodeJS 12的服务器端使用MongoDB 4 / Mongoose 5构建应用程序。
我有一个由Angular查询构建器模块以JSON格式生成的查询。JSON对象将通过POST请求发送到后端。
问题:如何将JSON查询转换为MongoDB运算符以执行数据库查询?
这是由查询生成器插件生成的简单查询的示例。请注意“嵌套” AND / OR条件的多个级别的要求。
{
"condition": "and",
"rules": [
{
"field": "Brief_D_Reactiedatum",
"operator": "!=",
"value": "Eventtoets_Fn"
},
{
"condition": "or",
"rules": [
{
"field": "Alleen_AO",
"operator": "=",
"value": "Parkeerreden"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)