我已将自定义工具栏附加为图片。我附上了我正在努力解决的代码。
import { Component } from '@angular/core';
import {IONIC_DIRECTIVES} from 'ionic/ionic';
@Component({
selector: 'slime-toolbar',
templateUrl: 'slime-toolbar.html',
directives: [IONIC_DIRECTIVES]
})
但是上面的代码给出了错误,指令不能是组件的参数
答案 0 :(得分:2)
我建议创建一个从ion-header派生的自定义组件。 虽然您没有在自定义工具栏中提及您想要的功能,但可以假设您要根据某些页面的逻辑更改添加的样式和项目。即。你想根据你所在的页面传递一个标题字符串,或者在右边添加一个图标等。
<强>定型强>
造型非常简单。如果您想在整个应用程序中使用样式作为组件,那么最佳解决方案是针对可以找到的离子2变量here。例如,如果您想更改背景颜色,只需编辑src
- &gt; theme
- &gt; variables.scss
这样的文件
$toolbar-ios-background:(green);
$toolbar-md-background:(green);
可以轻松调整各种其他工具栏特定变量。
如果您想根据用户所在的页面更改样式,那么它将作为属性添加到<ion-header>
作为输入进一步说明。
<强>组件强>
首先,我会使用cli快速生成组件
$: ionic g component my-header
然后将该组件添加到app.module.ts
作为声明。
import { MyHeaderComponent } from '../components/myheader/myheader';
@NgModule({
declarations: [
MyApp,
Page1,
Page2,
MyHeaderComponent
],
然后,您可以将组件html更改为
<ion-header no-border>
<ion-navbar>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>{{text}}</ion-title>
</ion-navbar>
将新创建的标题组件添加到通常具有<ion-header>
完整html的位置,通常位于您希望显示的页面上<ion-content>
标记之前的页面顶部。现在,这将显示您的自定义组件作为离子2标头元素。但是,当您将@Input()
和@Output()
添加到组件.ts
时会发生主要自定义
自定义位
添加到您的组件.ts
import { Component,Input,Output,EventEmitter } from '@angular/core';
现在您可以使用输入
@Input('headerText') dynamicHeaderText;
text:string;
headerText
是您添加到自定义组件的属性的名称
<my-header headerText="New title"></my-header>
New title
是将传递到组件并分配给dynamicHeaderText
的字符串
然后,您可以将dynamicHeaderText
分配给text:string
ngAfterViewInit(){
this.text = this.dynamicHeaderText;
}
现在,自定义组件标记中添加的字符串(New Title)(可以根据它所在的页面创建为自定义逻辑)将自定义组件逻辑传递给变量dynamicHeaderText
。然后可以对其进行操作并将其分配给自定义组件html上添加的变量。
你可以做更多的事情,并建议进一步研究自定义组件,为代码片段添加动态逻辑。 请注意,如果添加动态值,则需要将属性更改为包含方括号。
<my-header [headerText]="dynamicLogicText"></my-header>
现在,您可以从离子2标头和基于您自己的自定义逻辑的可重用代码包获得所有好东西。这使得测试和可维护性变得更加容易。
希望这是有道理的。