2017-11-23 15 views
0

のを使用してNativeScriptを使用しています。Angular2ネイティブ|フィーチャモジュールのコンポーネントファイルを解決できませんでした

という名前のモジュールを作成しました。共有するコンポーネントを作成することに決めました。ここでは、一般的に使用されるコンポーネントを作成することにしました。

私はRadSideDrawerを使用して「サイドドロワー」と呼ばれるコンポーネントを作成しようとしましたが、コンポーネントを他のコンポーネントの親として使用しました。

しかし、アプリケーションを実行しようとすると、「side-drawer.component.htmlを解決できませんでした」と表示されます。

side-drawerが使用されているフォルダ構造app.module.tsが添付されました&エラーです。

あなたの意見をうかがってください。 TIA

folder structure

//app.module.ts 
 
import { 
 
    NgModule, 
 
    NO_ERRORS_SCHEMA 
 
} from "@angular/core"; 
 
import { 
 
    NativeScriptModule 
 
} from "nativescript-angular/nativescript.module"; 
 
import { 
 
    AppRoutingModule 
 
} from "./app.routing"; 
 
import { 
 
    AppComponent 
 
} from "./app.component"; 
 

 
/*3rd Party Dependencies*/ 
 
import { 
 
    NativeScriptUISideDrawerModule 
 
} from "nativescript-pro-ui/sidedrawer/angular" 
 

 

 
/*internal modules*/ 
 
import { 
 
    ItemService 
 
} from "./item/item.service"; 
 
import { 
 
    ItemsComponent 
 
} from "./item/items.component"; 
 
import { 
 
    ItemDetailComponent 
 
} from "./item/item-detail.component"; 
 
import { 
 
    SharedModule 
 
} from './shared/shared.module'; 
 

 
@NgModule({ 
 
    bootstrap: [ 
 
    AppComponent 
 
    ], 
 
    imports: [ 
 
    NativeScriptModule, 
 
    AppRoutingModule, 
 
    NativeScriptUISideDrawerModule, 
 
    SharedModule 
 
    ], 
 
    declarations: [ 
 
    AppComponent, 
 
    ItemsComponent, 
 
    ItemDetailComponent 
 
    ], 
 
    providers: [ 
 
    ItemService 
 
    ], 
 
    schemas: [ 
 
    NO_ERRORS_SCHEMA 
 
    ] 
 
}) 
 
/* 
 
Pass your application module to the bootstrapModule function located in main.ts to start your app 
 
*/ 
 
export class AppModule {}

//shared/side-drawer/side-drawer.component.ts 
 
import { 
 
    Component, 
 
    ViewChild, 
 
    AfterViewInit, 
 
    OnDestroy 
 
} from '@angular/core'; 
 
import { 
 
    ActivatedRoute 
 
} from '@angular/router'; 
 
import { 
 
    RouterExtensions 
 
} from 'nativescript-angular/router'; 
 

 
import { 
 
    Page 
 
} from 'ui/page'; 
 
import { 
 
    isAndroid, 
 
    isIOS 
 
} from 'platform'; 
 
import { 
 
    ActionItem 
 
} from 'ui/action-bar'; 
 
import { 
 
    RadSideDrawerComponent, 
 
    SideDrawerType 
 
} from "nativescript-pro-ui/sidedrawer/angular"; 
 
import { 
 
    RadSideDrawer, 
 
    SlideInOnTopTransition, 
 
    PushTransition 
 
} from 'nativescript-pro-ui/sidedrawer'; 
 

 
@Component({ 
 
    selector: 'app-side-drawer', 
 
    templateUrl: './side-drawer.component.html', 
 
    styleUrls: ['./side-drawer.component.css'] 
 
}) 
 
export class SideDrawerComponent implements AfterViewInit, OnDestroy { 
 
    @ViewChild(RadSideDrawerComponent) public drawerComponent: RadSideDrawerComponent; 
 
    /** 
 
    * On tap of any side-drawer item, hiding content if this flag is true. 
 
    */ 
 
    isContentVisible: boolean = true; 
 

 
    /** 
 
    * For android using SlideOnTop transition and for iOS, push transition. 
 
    */ 
 
    drawerTransition: any; 
 

 
    /** 
 
    * Navigation Menu Items 
 
    */ 
 
    navMenu: any[] = [{ 
 
     name: 'Home', 
 
     commands: ['/'] 
 
    }, 
 
    { 
 
     name: 'About', 
 
     commands: ['/about'] 
 
    }, 
 
    { 
 
     name: 'Contact', 
 
     commands: ['/contact'] 
 
    } 
 
    ]; 
 

 
    private drawer: SideDrawerType; 
 

 
    constructor(
 
    private routerExtensions: RouterExtensions, 
 
    private activatedRoute: ActivatedRoute, 
 
    private page: Page 
 
) { 
 
    console.log("Hellooo"); 
 
    console.log(this.drawer); 
 
    this.setActionBarIcon(this.page); 
 
    this.setDrawerTransition(); 
 
    this.toggleSideDrawer(); 
 
    } 
 

 
    ngAfterViewInit() { 
 
    this.drawer = this.drawerComponent.sideDrawer; 
 
    } 
 

 
    ngOnDestroy() { 
 
    this.drawer.off('drawerClosed'); 
 
    } 
 

 
    toggleSideDrawer() { 
 
    this.drawer.toggleDrawerState(); 
 
    } 
 

 
    /** 
 
    * Navigates to next page after drawer is closed. 
 
    */ 
 
    navigateTo(routeCommands: any[]) { 
 
    this.drawer.closeDrawer(); 
 
    let currentUrl = this.routerExtensions.router.routerState.snapshot.url; 
 
    let newUrlTree = this.routerExtensions.router.createUrlTree(routeCommands); 
 
    let newUrl = this.routerExtensions.router.serializeUrl(newUrlTree); 
 
    if (currentUrl !== newUrl) { 
 
     this.isContentVisible = false; 
 
    } 
 
    } 
 

 
    private setDrawerTransition() { 
 
    if (isAndroid) { 
 
     this.drawerTransition = new SlideInOnTopTransition(); 
 
    } 
 

 
    if (isIOS) { 
 
     this.drawerTransition = new PushTransition(); 
 
    } 
 
    } 
 

 
    private setActionBarIcon(page: Page) { 
 
    if (isAndroid) { 
 
     page.actionBar.navigationButton = this.getNavigationButton(); 
 
    } 
 

 
    if (isIOS) { 
 
     page.actionBar.actionItems.addItem(this.getNavigationButton()); 
 
    } 
 
    } 
 

 
    private getNavigationButton() { 
 
    let navActionItem = new ActionItem(); 
 
    navActionItem.icon = 'res://ic_menu_black'; 
 
    if (navActionItem.ios) { 
 
     navActionItem.ios.position = 'left'; 
 
    } 
 
    navActionItem.on('tap', this.toggleDrawer.bind(this)); 
 
    return navActionItem; 
 
    } 
 

 
    private toggleDrawer() { 
 
    this.drawer.toggleDrawerState(); 
 
    } 
 
}

//shared/shared.module.ts 
 
import { 
 
    NgModule 
 
} from '@angular/core'; 
 
import { 
 
    CommonModule 
 
} from '@angular/common'; 
 
import { 
 
    SideDrawerComponent 
 
} from './side-drawer/side-drawer.component'; 
 
import { 
 
    NativeScriptUISideDrawerModule 
 
} from "nativescript-pro-ui/sidedrawer/angular"; 
 

 
@NgModule({ 
 
    imports: [ 
 
    CommonModule, 
 
    NativeScriptUISideDrawerModule 
 
    ], 
 
    declarations: [SideDrawerComponent], 
 
    exports: [ 
 
    SideDrawerComponent 
 
    ] 
 
}) 
 
export class SharedModule {}

error

+0

等[」 ./shared/side-drawer/side-drawer.component.css '] })** side-drawer.component.ts **では動作するようです。しかし、なぜそれがそうであるのかわからないのですか? –

+0

投稿してくださいshared.module.ts –

+0

@VivekDoshi興味を示してくれてありがとう、私は質問を更新しました。 –

答えて

0

shared.module.tsからこれを削除します。

exports: [ 
    SideDrawerComponent 
] 
+0

私はそれを削除しようとしました。また、side-drawer.component.tsを '@Component({ セレクター: 'app-side-drawer'、 templateUrl: './side-drawer.component.html'、 styleUrls :['./side-drawer.component.css'] }) '。 **しかし、それは動作しません** –

0

あなたがmoduleId: module.id,

例を追加する必要が@Componentに相対パスを使用する場合は、次の相対パスを:

@Component({ 
    selector: 'app-side-drawer', 
    moduleId: module.id, 
    templateUrl: './side-drawer.component.html', 
    styleUrls: ['./side-drawer.component.css'] 
}) 

例:絶対パス:

@Component({ 
    selector: 'app-side-drawer', 
    templateUrl: './shared/side-drawer/side-drawer.component.html', 
    styleUrls: ['./shared/side-drawer/side-drawer.component.css'] 
}) 
0

パスを絶対にする必要があります。 'APP-側引き出し' templateUrl: './shared/side-drawer/side-drawer.component.html' styleUrls:私は `試み@Component({ セレクタ @Component({ selector: 'app-side-drawer', templateUrl: 'shared/side-drawer/side-drawer.component.html', styleUrls: ['shared/side-drawer/side-drawer.component.css'] })

関連する問題