Decius Decius - 10 months ago 51
TypeScript Question

Angular2 Tutorial: How is the ID variable in this section being auto incremented?

In This Section of the Angular2 Tutorial there is functionality to add new items to the array. When added, the ID is automatically incremented but I can't figure out what process is doing that.

I know that Arrays.push() returns the length of the array, is that length automatically inserted into the id variable in the Hero class?

In there is this block of code to create a hero:

create(name: string): Promise<Hero> {
return this.http
.post(this.heroesUrl, JSON.stringify({name: name}), {headers: this.headers})
.then(res => res.json().data)

In the heroes.component.ts there is the add

add(name: string): void {
name = name.trim();
if (!name) { return; }
.then(hero => {
this.selectedHero = null;


The tutorial is using the angular 2 in-memory-web-api library. It is handling the post that is being made to the heroes url. The handler can be seen in this file on line 328:

Inside that handler the id is generated via a call to the genId function whose implementation is on line 257:

InMemoryBackendService.prototype.genId = function (collection) {
    // assumes numeric ids
    var maxId = 0;
    collection.reduce(function (prev, item) {
        maxId = Math.max(maxId, typeof === 'number' ? : maxId);
    }, null);
    return maxId + 1;