feat(nav): set default stack history on app init

This commit is contained in:
Adam Bradley
2016-09-19 08:05:59 -05:00
parent 50e445ef5c
commit ca8cc0af2e
4 changed files with 24 additions and 7 deletions

View File

@ -490,8 +490,8 @@ export const deepLinkConfig: DeepLinkConfig = {
{ component: FirstPage, name: 'first-page' },
{ component: AnotherPage, name: 'another-page' },
{ component: MyCmpTest, name: 'tab1-page1' },
{ component: FullPage, name: 'full-page' },
{ component: PrimaryHeaderPage, name: 'primary-header-page' },
{ component: FullPage, name: 'full-page', defaultHistory: ['first-page', 'another-page'] },
{ component: PrimaryHeaderPage, name: 'primary-header-page', defaultHistory: ['first-page', 'full-page'] },
]
};

View File

@ -1,7 +1,7 @@
import { Renderer, TypeDecorator } from '@angular/core';
import { DeepLinker } from './deep-linker';
import { isPresent } from '../util/util';
import { isArray, isPresent } from '../util/util';
import { isViewController, ViewController } from './view-controller';
import { NavControllerBase } from './nav-controller-base';
import { Transition } from '../transitions/transition';
@ -32,15 +32,18 @@ export function convertToView(linker: DeepLinker, nameOrPageOrView: any, params:
export function convertToViews(linker: DeepLinker, pages: any[]): ViewController[] {
const views: ViewController[] = [];
if (pages) {
if (isArray(pages)) {
for (var i = 0; i < pages.length; i++) {
var page = pages[i];
if (page) {
if (isViewController(page)) {
views.push(page);
} else {
} else if (page.page) {
views.push(convertToView(linker, page.page, page.params));
} else {
views.push(convertToView(linker, page, null));
}
}
}

View File

@ -18,6 +18,18 @@ describe('NavUtil', () => {
});
it('should convert all string names', () => {
let linker = mockDeepLinker({
links: [{ component: MockView, name: 'someName' }]
});
let pages = ['someName', 'someName', 'someName'];
let views = convertToViews(linker, pages);
expect(views.length).toEqual(3);
expect(views[0].component).toEqual(MockView);
expect(views[1].component).toEqual(MockView);
expect(views[2].component).toEqual(MockView);
});
it('should convert all page string names', () => {
let linker = mockDeepLinker({
links: [{ component: MockView, name: 'someName' }]
});

View File

@ -42,7 +42,8 @@ export class UrlSerializer {
id: configLink.name,
name: configLink.name,
component: configLink.component,
data: null
data: null,
defaultHistory: configLink.defaultHistory
} : null;
}
@ -174,7 +175,8 @@ export const fillMatchedUrlParts = (segments: NavSegment[], urlParts: string[],
id: matchedUrlParts.join('/'),
name: configLink.name,
component: configLink.component,
data: createMatchedData(matchedUrlParts, configLink)
data: createMatchedData(matchedUrlParts, configLink),
defaultHistory: configLink.defaultHistory
};
}
}