我想创建Angular 2指令,它将仅从用户输入到输入字段的文本的开头和结尾处确定空格.
我有输入字段
<input trim name="fruit" [(ngModel)]="fruit"/>
Run Code Online (Sandbox Code Playgroud)
和指令
import {Directive, ElementRef} from "@angular/core";
@Directive({
selector: 'input[trim]',
host: {'(blur)': 'onChange($event)'}
})
export class TrimWhiteSpace {
constructor(private cdRef:ChangeDetectorRef, private el: ElementRef){}
onChange($event:any) {
let theEvent = $event || window.event;
theEvent.target.value = theEvent.target.value.trim();
}
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,删除空格并更改输入字段中的文本,但问题是ngModel变量"fruit"中的值没有更改,它仍然包含在开头或结尾处带空格的文本.
我还尝试在onChange方法中添加以下内容
this.el.nativeElement.value = theEvent.trim();
this.cdRef.detectChanges();
Run Code Online (Sandbox Code Playgroud)
并将表单(模糊)更改为(ngModelChange),但ngModel中的文本不受影响.
有什么建议?
如果我输入的结构类似localhost:3000 /某些东西,应用程序被正确地重定向到localhost:3000/login,但如果我以localhost:3000/something/something的形式输入URL,则应用程序崩溃,因为路由器没有正确重定向.
我像这样设置路由器文件:
@NgModule({
imports: [
RouterModule.forRoot([
{ path: '', redirectTo: '/login', pathMatch: 'full' },
{ path: 'login', component: LoginComponent },
{ path: '**', component: PageNotFoundComponent },
])
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
Run Code Online (Sandbox Code Playgroud)
我在我的Angular 2应用程序中使用HTML5 URL样式.
当他输入像localhost:3000/something/something这样的URL时,如何设置用于显示用户404页面的通配符?