diff --git a/apps/nativescript-demo-ng/package.json b/apps/nativescript-demo-ng/package.json
index 85c117a..1570ac0 100644
--- a/apps/nativescript-demo-ng/package.json
+++ b/apps/nativescript-demo-ng/package.json
@@ -11,6 +11,7 @@
},
"devDependencies": {
"@nativescript/android": "8.0.0",
- "@nativescript/ios": "8.0.0"
+ "@nativescript/ios": "8.0.0",
+ "@nativescript/unit-test-runner": "^2.0.5"
}
}
diff --git a/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts b/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts
index 5529f32..11754c9 100644
--- a/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts
+++ b/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts
@@ -35,6 +35,7 @@ export class PlatformSpecificAttributeComponent {
const DECLARATIONS = [PlatformSpecificAttributeComponent, AndroidSpecificComponent, IosSpecificComponent];
@NgModule({
declarations: DECLARATIONS,
+ imports: [NativeScriptModule],
schemas: [NO_ERRORS_SCHEMA],
})
export class PlatformModule {}
@@ -61,7 +62,8 @@ describe('Platform filter directives', () => {
fixture.detectChanges();
const componentRef = fixture.componentRef;
const componentRoot = componentRef.instance.elementRef.nativeElement;
- expect(dumpView(componentRoot, true).indexOf('Label') < 0).toBe(true);
+ console.log(dumpView(componentRoot, true));
+ expect(dumpView(componentRoot, true).indexOf('label') < 0).toBe(true);
});
it('applies iOS specific attribute', () => {
const fixture = TestBed.createComponent(PlatformSpecificAttributeComponent);
@@ -94,7 +96,7 @@ describe('Platform filter directives', () => {
fixture.detectChanges();
const componentRef = fixture.componentRef;
const componentRoot = componentRef.instance.elementRef.nativeElement;
- expect(dumpView(componentRoot, true).indexOf('Label') < 0).toBe(true);
+ expect(dumpView(componentRoot, true).indexOf('label') < 0).toBe(true);
});
it('applies Android specific attribute', () => {
const fixture = TestBed.createComponent(PlatformSpecificAttributeComponent);
diff --git a/apps/nativescript-demo-ng/tools/xplat-postinstall.js b/apps/nativescript-demo-ng/tools/xplat-postinstall.js
index 0c46e77..1e58a10 100644
--- a/apps/nativescript-demo-ng/tools/xplat-postinstall.js
+++ b/apps/nativescript-demo-ng/tools/xplat-postinstall.js
@@ -14,9 +14,11 @@ try {
}
// Helpful to trigger ngcc after an install to ensure all has processed properly
-const child = childProcess.spawn(/^win/.test(process.platform) ? '..\\..\\node_modules\\.bin\\ngcc' : '../../node_modules/.bin/ngcc', ['--tsconfig', 'tsconfig.app.json', '--properties', 'es2015', 'module', 'main', '--first-only'], {
+const ngccPath = path.join('..', '..', 'node_modules', '.bin', 'ngcc');
+const child = childProcess.spawn(ngccPath, ['--tsconfig', 'tsconfig.app.json', '--properties', 'es2015', 'module', 'main', '--first-only'], {
cwd: process.cwd(),
stdio: 'inherit',
+ shell: process.platform == 'win32'
});
child.on('close', (code) => {
diff --git a/packages/angular/src/lib/cdk/platform-filters/index.ts b/packages/angular/src/lib/cdk/platform-filters/index.ts
new file mode 100644
index 0000000..362e5cc
--- /dev/null
+++ b/packages/angular/src/lib/cdk/platform-filters/index.ts
@@ -0,0 +1,28 @@
+/* eslint-disable @angular-eslint/component-selector */
+import { Component, Inject } from '@angular/core';
+import { Device, platformNames } from '@nativescript/core';
+import { DEVICE } from '../../tokens';
+
+@Component({
+ selector: 'android',
+ template: ``,
+})
+export class AndroidFilterComponent {
+ public show: boolean;
+
+ constructor(@Inject(DEVICE) device: typeof Device) {
+ this.show = device.os === platformNames.android;
+ }
+}
+
+@Component({
+ selector: 'ios',
+ template: ``,
+})
+export class IosFilterComponent {
+ public show: boolean;
+ constructor(@Inject(DEVICE) device: typeof Device) {
+ console.log(device.os, platformNames.ios);
+ this.show = device.os === platformNames.ios;
+ }
+}
diff --git a/packages/angular/src/lib/nativescript-common.module.ts b/packages/angular/src/lib/nativescript-common.module.ts
index d0b30f2..9a9352f 100644
--- a/packages/angular/src/lib/nativescript-common.module.ts
+++ b/packages/angular/src/lib/nativescript-common.module.ts
@@ -6,8 +6,9 @@ import { ListViewComponent, TemplateKeyDirective } from './cdk/list-view/list-vi
import { registerNativeScriptViewComponents } from './element-registry';
import { ModalDialogService } from './legacy/directives/dialogs';
import { TabViewDirective, TabViewItemDirective } from './cdk/tab-view';
+import { AndroidFilterComponent, IosFilterComponent } from './cdk/platform-filters';
-const CDK_COMPONENTS = [ActionBarComponent, ActionBarScope, ActionItemDirective, NavigationButtonDirective, ListViewComponent, TemplateKeyDirective, TabViewDirective, TabViewItemDirective];
+const CDK_COMPONENTS = [ActionBarComponent, ActionBarScope, ActionItemDirective, NavigationButtonDirective, ListViewComponent, TemplateKeyDirective, TabViewDirective, TabViewItemDirective, AndroidFilterComponent, IosFilterComponent];
registerNativeScriptViewComponents();
diff --git a/packages/angular/src/lib/public_api.ts b/packages/angular/src/lib/public_api.ts
index 983d315..0130aea 100644
--- a/packages/angular/src/lib/public_api.ts
+++ b/packages/angular/src/lib/public_api.ts
@@ -14,6 +14,7 @@ export * from './cdk/list-view';
export * from './cdk/portal';
export * from './cdk/dialog';
export * from './cdk/tab-view';
+export * from './cdk/platform-filters';
export * from './file-system';
export * from './nativescript-common.module';
export * from './loading.service';