在This Section of the Angular2 Tutorial中,有向数组添加新项目的功能。添加后,ID会自动递增,但我无法弄清楚正在执行的操作。
我知道Arrays.push()返回数组的长度,是自动插入到Hero类的id变量中的长度吗?
在hero.services.ts中,有一段代码可以创建一个英雄:
create(name: string): Promise<Hero> {
return this.http
.post(this.heroesUrl, JSON.stringify({name: name}), {headers: this.headers})
.toPromise()
.then(res => res.json().data)
.catch(this.handleError);
}
在heroes.component.ts中有添加
add(name: string): void {
name = name.trim();
if (!name) { return; }
this.heroService.create(name)
.then(hero => {
this.heroes.push(hero);
this.selectedHero = null;
});
}
答案 0 :(得分:7)
本教程使用的是following-sibling axes
库。它正在处理正在对英雄网址发布的帖子。可以在第328行的文件中看到处理程序:
在该处理程序内部,id通过调用genId函数生成,该函数的实现位于第257行:
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe[title = 'Universal Device Template Configuration']")));
//now find the desire element
WebElement textBox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(.//td[contains(text(),'Display Name*')]/following-sibling::td)[1]//div[contains(@class, 'dijitInputField')]/input")));
答案 1 :(得分:2)
它使用InMemoryDbService
的默认功能。
您可以在app/in-memory-dataservice.ts
import { InMemoryDbService } from 'angular2-in-memory-web-api
可在此处找到服务的角度来源:in-memory-backend.service.t (line 326)
答案 2 :(得分:0)
在服务的create
方法中,调用web api并将英雄的名称发布到其中,返回包含id
和name
字段的完整英雄对象。
所以我想增量和&#34;保存&#34;发生在网络api的窗帘后面。