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: FirstPage, name: 'first-page' },
{ component: AnotherPage, name: 'another-page' }, { component: AnotherPage, name: 'another-page' },
{ component: MyCmpTest, name: 'tab1-page1' }, { component: MyCmpTest, name: 'tab1-page1' },
{ component: FullPage, name: 'full-page' }, { component: FullPage, name: 'full-page', defaultHistory: ['first-page', 'another-page'] },
{ component: PrimaryHeaderPage, name: 'primary-header-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 { Renderer, TypeDecorator } from '@angular/core';
import { DeepLinker } from './deep-linker'; import { DeepLinker } from './deep-linker';
import { isPresent } from '../util/util'; import { isArray, isPresent } from '../util/util';
import { isViewController, ViewController } from './view-controller'; import { isViewController, ViewController } from './view-controller';
import { NavControllerBase } from './nav-controller-base'; import { NavControllerBase } from './nav-controller-base';
import { Transition } from '../transitions/transition'; 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[] { export function convertToViews(linker: DeepLinker, pages: any[]): ViewController[] {
const views: ViewController[] = []; const views: ViewController[] = [];
if (pages) { if (isArray(pages)) {
for (var i = 0; i < pages.length; i++) { for (var i = 0; i < pages.length; i++) {
var page = pages[i]; var page = pages[i];
if (page) { if (page) {
if (isViewController(page)) { if (isViewController(page)) {
views.push(page); views.push(page);
} else { } else if (page.page) {
views.push(convertToView(linker, page.page, page.params)); 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', () => { 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({ let linker = mockDeepLinker({
links: [{ component: MockView, name: 'someName' }] links: [{ component: MockView, name: 'someName' }]
}); });

View File

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