2017-04-06 67 views
0

我有一个Angular2 Material mdInput字段,由于某种原因,占位符文本不会消失,输入文本区域在单击时不会聚焦。Angular2 mdInput点击重点问题

<form class="create-taskitem-form" (ngSubmit)="submitNewTask()" novalidate> 
    <md-input-container class="create-task-item"> 
     <input mdInput 
     [(ngModel)]="taskListTitle" 
     (keyup.escape)="clearNewTask()" 
     name="taskListTitle" 
     autocomplete="off" 
     [placeholder]="newItemPlaceholder" 
     type="text"> 
    </md-input-container> 
</form> 

当它不工作,占位符不消失,现场不集中,但我可以在其中输入内容:

enter image description here

什么奇怪的是,一旦我调整浏览器,它确实工作,并卡入正确的聚焦状态:

enter image description here

奇怪的是,我有一个嵌套的子组件,它可以很好地工作。以下是它们的根模块:

import 'hammerjs'; 

@NgModule({ 
    imports: [ 
    CommonModule, 
    TasksRoutingModule, 
    ContentEditableModule, 
    ReactiveFormsModule, 
    FormsModule, 
    MaterialModule 
    ], 
    exports: [ 
    TasksRoutingModule 
    ], 
    providers: [ 
    TasklistTypes 
    ], 
    declarations: [TasklistCollectionComponent, TasklistComponent, TaskItemComponent] 
}) 
export class TasksModule { } 

回答

0

尝试去除占位符周围的括号。

... 
placeholder="New list" 
... 
+0

我已经尝试这两个,并删除占位符,但行为相同。 –

0

东西是不对的角(现在)注册,所以我只是跑一个区时,focus()blur()事件发生在输入字段,并固定它:

<md-input-container class="create-task-item"> 
     <input mdInput 
     (blur)="onBlur()" 
     (focus)="onFocus()" 
     [(ngModel)]="taskListTitle" 
     (keyup.escape)="clearNewTaskList()" 
     name="taskListTitle" 
     autocomplete="off" 
     [placeholder]="newItemPlaceholder" 
     type="text"> 
</md-input-container> 

在我的组件:

onBlur(){ 
    this.zone.run(() => {}); 
    } 

onFocus(){ 
    this.zone.run(() => {}); 
} 
+0

它看起来像是打破了角度区域,导致必须使用'zone.run()'或'changeDetectorRef'手动刷新视图。为了将来的参考更多关于这[这里](https://stackoverflow.com/questions/34827334/triggering-angular2-change-detection-manually) – Stanislasdrg