C#6.0刚刚发布,并且有一个新的不错的小功能,我真的很想在JavaScript中使用它.他们被称为Null条件运算符.这些使用?.或?[]语法.
这些操作基本上允许您null在尝试访问属性之前检查您获得的对象.如果对象是null,那么您将获得null属性访问的结果.
int? length = customers?.Length;
Run Code Online (Sandbox Code Playgroud)
所以这里int可以为null,并且如果customers为null 则将采用该值.更好的是你可以链接这些:
int? length = customers?.orders?.Length;
Run Code Online (Sandbox Code Playgroud)
我不相信我们可以用JavaScript做到这一点,但我想知道做类似事情的最好方法是什么.通常我发现链接if块难以阅读:
var length = null;
if(customers && customers.orders) {
length = customers.orders.length;
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序中出现了一个奇怪的错误.它应该{{thing.title}}从一个对象打印出来,但它在控制台中显示错误:
EXCEPTION: TypeError: l_thing0 is undefined in [{{thing.title}} in AppComponent@4:44]
Run Code Online (Sandbox Code Playgroud)
我不确定从哪里来l_thing0.如果我尝试{{thing}}在页面中显示,则会显示[object Object].如果我尝试JSON.stringify(this.thing)(参见该showObj()函数),它会正确显示字符串化对象.但是,如果我尝试访问属性,就像{{thing.title}}我得到l_thing0未定义的错误.
这是app.component.ts:
import {Component, OnInit} from 'angular2/core';
import {Thing} from './thing';
import {ThingService} from './thing.service';
import {SubThingComponent} from "./subthing.component";
@Component({
selector: 'thing-app',
template: `
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>{{thing.title}} <a href="#" (click)="showObj()" class="btn btn-default">Show Stringified Obj</a></h1>
<subthing></subthing>
</div>
</div>
</div>
`,
styles:[`
`],
directives: [SubThingComponent],
providers: [ThingService]
})
export class AppComponent …Run Code Online (Sandbox Code Playgroud) 我试图通过我的CRUD API获得UPDATE工作.我知道问题是UPDATE的形式或组件,但我不确定我缺少什么.
表单HTML
<form #form="ngForm" (ngSubmit)="updateReminder(form.value)">
<div class="form-group">
<label for="nameField">Name:</label>
<input name="nameField" class="form-control" [ngModel]="reminders.name">
<br />
<label for="occasionField">Occasion:</label>
<input name="occasionField" class="form-control"
[ngModel]="reminders.occasion">
</div>
<button type="submit">save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
表单组件
import { Component, OnInit, Input } from '@angular/core';
import { ReminderService } from '../providers/reminder.service';
@Component({
selector: 'app-results',
templateUrl: './results.component.html',
styleUrls: ['./results.component.css'],
providers: [ReminderService]
})
export class ResultsComponent implements OnInit {
constructor(private reminderService:ReminderService) {}
reminderList = null;
@Input() reminders;
ngOnInit() {}
updateReminder(obj:any):void {
this.reminders.name = obj.nameField;
this.reminders.occasion = obj.occasionField;
this.reminderService.updateReminder(this.reminders._id, this.reminders)
.subscribe((result) =>{
location.reload(); …Run Code Online (Sandbox Code Playgroud)