我已成功獲得Telerik Side-drawer在一個視圖中工作,但我堅持將其設置爲可在全局範圍內使用的組件。在所有視圖中生成Telerik Sidedrawer
我想避免將它複製並粘貼到每個視圖中,所以我的問題是如何將它變成可重用組件。
我已成功獲得Telerik Side-drawer在一個視圖中工作,但我堅持將其設置爲可在全局範圍內使用的組件。在所有視圖中生成Telerik Sidedrawer
我想避免將它複製並粘貼到每個視圖中,所以我的問題是如何將它變成可重用組件。
所以當你使用page-router-outlet
不要修改主要的應用程序模板<page-router-outlet></page-router-outlet>
- 你可能會覺得,否則但其精(頁面路由器出口工程將一側抽屜僅添加到主網頁的方式 - 文件可能會產生誤導,但它的工作原理就是這樣)。
現在創建,這將是你的指令包含側抽屜組件,這就是模板:
<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
改變你的路到實際的文件,因爲我撕開,從實際項目 - 使模板放置我components/header/header.component.html
並將於基地your-header
指令):
@Component({
selector: "your-header",
templateUrl: "components/header/header.component.html",
styleUrls: ['components/header/header.css'],
})
在您的實際頁面(再次展示了它在我的項目login
頁)你通過這個新指令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.component.html
在指令
<your-header>
<StackLayout class="content">
<label class="h1 left" text="Please Login"></label>
</StackLayout>
</your-header>
它會做的是始終在sidedrawer內容部分(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 });
如果事情不嵌入指令工作的,美犯的錯誤,你可以扔掉了SideDrawer並添加只是一些標籤在那裏,直到你得到它的工作(正常通過ng-content
HTML)
請注意,這是形式1.3.x
SideDrawer和我相信有變化1.4.x
明顯會改變你的引導文件,但處理保持不變。
請注意,一切都需要在SideDrawer模板中包裝,否則您將有兩個視圖抽屜,它將會保持平坦(SideDrawer有它自己的「繪圖」方法)。如果你不想在某個頁面上使用SideDrawer,你只需要不包含指令。
此外,因爲這是正常的指令,你可以通過工作人員給你標題<your-header variable="variableValue">
。您可以在首頁align
模型和ActionBar
的選項之間切換。
而不是ng-content如果我用戶page-router-outlet它不起作用。操作欄變空了。但是如何實現路由? – Habeeb
路由不會真的改變。 你不應該改變'page-router-outlet'模板,因爲它不像普通指令那樣工作,據我所知,新頁面正在替換根目錄。這就是爲什麼在「page-router-outlet」中放置操作欄的人在第一頁看到操作欄,而在其他頁面看不到操作欄的原因。 執行sidecuter是''page-router-outlet'的構建方式的一大弊病] – sp3c1
'SIDEDRAWER_PROVIDERS'似乎已經被最新版本的RadSideDrawer所淘汰。任何簡單的選擇? –
嗨,您可以分享您迄今爲止所使用的代碼,因爲這可以幫助人們回答您的問題,還可以爲您的問題提供豐富的內容以幫助防止降低成本。 – Clint