Telerik Side-drawerを1つのビューで正常に動作させることができましたが、私はそれをグローバルに使用できるコンポーネントにしています。Telerik Sidedrawerをすべてのビューで作成する
私はコピーしてすべてのビューに貼り付けることを避けたいので、私の質問はどのように再利用可能なコンポーネントにすることができます。
Telerik Side-drawerを1つのビューで正常に動作させることができましたが、私はそれをグローバルに使用できるコンポーネントにしています。Telerik Sidedrawerをすべてのビューで作成する
私はコピーしてすべてのビューに貼り付けることを避けたいので、私の質問はどのように再利用可能なコンポーネントにすることができます。
ですから、page-router-outlet
メインアプリテンプレート<page-router-outlet></page-router-outlet>
を変更しないでください使用している場合 - あなたはそう感じるが、その細かい(ページルータ出口作品が唯一のメインページにサイド引出しを追加する方法かもしれません - ドキュメントを誤解を招くかもしれないが、それはそのように働く)。
今すぐ側の引き出しが含まれていますディレクティブとして使用するコンポーネントを作成して、テンプレートのthats:
<RadSideDrawer #drawer>
<StackLayout tkDrawerContent class="sideStackLayout">
<StackLayout class="sideTitleStackLayout">
<ScrollView>
<StackLayout class="sideStackLayout">
<!-- content of menu -->
</StackLayout>
</ScrollView>
</StackLayout>
</StackLayout>
<StackLayout tkMainContent>
<ActionBar title="">
<!-- this is your action bar content -->
</ActionBar>
<ng-content></ng-content>
</StackLayout>
</RadSideDrawer>
TSの一部は、例えば、SideDrawerコンポーネントに基づいて行われます。
@Component({
selector: "your-header",
templateUrl: "components/header/header.component.html",
styleUrls: ['components/header/header.css'],
})
: - そのは、(テンプレートが
components/header/header.component.html
に私のために設置されており、
your-header
ディレクティブのベースになるように、私は、実際のプロジェクトからということをリッピングして、実際のファイルへ
@Component
であなたのパスを変更するには注意してください)そのように宣言することを言うことができますあなたの実際のページで
あなたはHeaderComponent
import {HeaderComponent} from "../../header/header.component";
@Component({
selector: "login-page",
templateUrl: "components/user/login/login.component.html",
styleUrls: ['components/user/login/login.css'],
directives: [HeaderComponent]
})
この新しいディレクティブを渡す(再び私のプロジェクトlogin
ページ上に表示)そして、あなたはディレクティブでlogin.component.html
をラップ
<your-header>
<StackLayout class="content">
<label class="h1 left" text="Please Login"></label>
</StackLayout>
</your-header>
どのような処理を行うのかは、角度作業の通常のディレクティブのように、サイドページのコンテンツセクション(SideDrawerテンプレートのng-content
)に常にコンテンツページを生成することです。
あなたのブートストラップの開始にSidedrawerディレクティブ自体を追加するだけです。
import {nativeScriptBootstrap} from "nativescript-angular/application";
import {nsProvideRouter} from "nativescript-angular/router";
import {RouterConfig} from "@angular/router";
import {AppComponent} from "./app.component";
import {SIDEDRAWER_PROVIDERS} from "nativescript-telerik-ui/sidedrawer/angular";
import {LandingComponent} from "./components/landingPage/landing.component";
import {LoginComponent} from "./components/user/login/login.component";
import {ExperimentalComponent} from "./components/experimental/experimental.component";
export const AppRoutes: RouterConfig = [
{ path: "", component: LandingComponent },
{ path: "login", component: LoginComponent },
]
nativeScriptBootstrap(AppComponent, [
[nsProvideRouter(AppRoutes, {})],
SIDEDRAWER_PROVIDERS,
], { startPageActionBarHidden: true });
何かがそのuはディレクティブを埋め込むことでミスを犯したことを
、あなたがSideDrawerを捨てることができますし、それが(適切ng-content
てHTMLを渡す)ワーキング得るまで、そこにはいくつかのラベルを追加するに動作しない場合
これはフォーム1.3.x
SideDrawerであることに注意してください。1.4.x
に変更があり、ブートストラップファイルが明らかに変更される可能性がありますが、処理は同じままです。
SideDrawerテンプレートにすべてをラップする必要があります。そうでなければ、2つのビュードロワーがあり、フラットになります(SideDrawerには独自の「描画」メソッドがあります)。 SideDrawerをいくつかのページで使いたくない場合は、ディレクティブを含めないでください。
また、これは通常の指示であるので、あなたにスタッフの頭を<your-header variable="variableValue">
に渡すことができます。トップページalign
のモデルとActionBar
のオプションの間でこの方法を切り替えることができます。
iユーザのページルータアウトレットの場合、ng-contentの代わりに動作していません。アクションバーが空になりました。しかし、どのようにルーティングを実装するのですか? – Habeeb
ルーティングは実際には変更されません。 'page-router-outlet'テンプレートは、普通の指示文のように動作しないので、新しいページは私が覚えている限りrootを置き換えているので変更しないでください。そのため、アクションバーを 'ページルータ出口 'に置く人々は、最初のページにアクションバーが表示されますが、他のページには表示されません。 'page-router-outlet'がビルドされているところで、sidedrawerの実装が大きな問題になりました;] – sp3c1
' SIDEDRAWER_PROVIDERS'はRadSideDrawerの最新バージョンでは時代遅れです。単純な選択肢はありますか? –
こんにちは、あなたはあなたの質問に答えるのを助けるかもしれないので、あなたがdownvotesを防ぐのを助けるためにあなたの質問を出すことができるように、あなたが今まで持っているコードを共有することができます。 – Clint