feat(angular): add standalone router outlet (#27926)

This commit is contained in:
Liam DeBeasi
2023-08-04 14:57:32 -04:00
committed by GitHub
parent de48493a16
commit 3ea7488b47
9 changed files with 38 additions and 6 deletions

View File

@@ -30,3 +30,5 @@ export {
} from './directives/navigation/router-link-delegate';
export { NavDelegate } from './directives/navigation/nav-delegate';
export { IonTabs } from './directives/navigation/tabs';
export { ProxyCmp } from './utils/proxy';

View File

@@ -1,3 +1 @@
// This is required to get ng-packagr to build.
// Remove this when you actually have something to export
export const placeholder = true;
export { IonRouterOutlet } from './navigation/router-outlet';

View File

@@ -0,0 +1,13 @@
import { Directive } from '@angular/core';
import { IonRouterOutlet as IonRouterOutletBase, ProxyCmp } from '@ionic/angular/common';
import { defineCustomElement } from '@ionic/core/components/ion-router-outlet.js';
@ProxyCmp({
defineCustomElementFn: defineCustomElement,
})
@Directive({
selector: 'ion-router-outlet',
standalone: true,
})
// eslint-disable-next-line @angular-eslint/directive-class-suffix
export class IonRouterOutlet extends IonRouterOutletBase {}

View File

@@ -0,0 +1,9 @@
describe('Router Outlet', () => {
beforeEach(() => {
cy.visit('/standalone/router-outlet');
})
it('should render a as a child page of the router outlet', () => {
cy.ionPageVisible('ion-router-outlet app-router-outlet');
});
})

View File

@@ -1 +1 @@
<router-outlet></router-outlet>
<ion-router-outlet></ion-router-outlet>

View File

@@ -1,6 +1,6 @@
import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';
import { IonRouterOutlet } from '@ionic/angular/standalone';
/**
* This temporary code initialized Ionic and ensures components are visible.
* TODO FW-4766 Can be removed when ticket is implemented
@@ -15,7 +15,7 @@ document.querySelector('html')!.classList.add('ion-ce')
selector: 'app-root-standalone',
templateUrl: './app.component.html',
standalone: true,
imports: [RouterModule]
imports: [RouterModule, IonRouterOutlet]
})
export class AppComponent {
}

View File

@@ -7,6 +7,7 @@ export const routes: Routes = [
component: AppComponent,
children: [
{ path: 'test', loadComponent: () => import('../test/test.component').then(m => m.TestComponent) },
{ path: 'router-outlet', loadComponent: () => import('../router-outlet/router-outlet.component').then(m => m.RouterOutletComponent) },
]
},
];

View File

@@ -0,0 +1 @@
This should be visible and rendered inside of an ion-router-outlet.

View File

@@ -0,0 +1,8 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-router-outlet',
templateUrl: './router-outlet.component.html',
standalone: true
})
export class RouterOutletComponent {}