TextField focus () не работает

Используя sample-Groceries-angular, я пытаюсь сфокусировать пароль вместо электронной почты, нажав кнопку

┌──────────────────┬─────────────────┬────────────────┬───────────────┐
│ Component        │ Current version │ Latest version │ Information   │
│ nativescript     │ 2.3.0           │ 2.3.0          │ Up to date    │
│ tns-core-modules │ 2.3.0           │ 2.3.0          │ Up to date    │
│ tns-android      │ 2.3.0           │ 2.3.0          │ Up to date    │
│ tns-ios          │                 │ 2.3.0          │ Not installed │
└──────────────────┴─────────────────┴────────────────┴───────────────┘

xml:

<TextField #email hint="Email Address" keyboardType="email" [(ngModel)]="user.email"
autocorrect="false" autocapitalizationType="none"></TextField>
<TextField #password hint="Password" secure="true" [(ngModel)]="user.password"></TextField>
<Button text="Focus Password" (tap)="focusDat()"></Button>

машинопись:

@ViewChild("password") password: ElementRef;
focusDat() {
  let password = <TextField>this.name.nativeElement;
  console.log(password.focus());
}

выход:

JS: false

person AboAlwi    schedule 20.10.2016    source источник
comment
focus () возвращается только в том случае, если элемент или один из дочерних элементов имеет фокус, он не будет устанавливать фокус на текстовое поле и выводить клавиатуру, но вы можете использовать собственный api, чтобы установить только проблему с текстовым полем, вам нужно будет сделать ios и android способ отдельно   -  person Marek Maszay    schedule 20.10.2016
comment
Что ж, api говорит, что пытается сфокусировать представление docs.nativescript.org / api-reference / classes / есть ли простой способ сделать то же самое? : /   -  person AboAlwi    schedule 20.10.2016
comment
да, он пытается сфокусироваться, но не устанавливает это тест, есть ли программная клавиатура видимая и простая? не уверен, потому что вам нужно сделать это для каждой платформы ios / android отдельно   -  person Marek Maszay    schedule 20.10.2016
comment
Возможно проблема в методе, где вы пытаетесь focus поле. В связи с этим, чтобы сфокусировать поле пароля, попробуйте следующий код в вашем методе this.password.nativeElement.focus();   -  person Nikolay Tsonev    schedule 20.10.2016
comment
Метод @NikolayTsonev в порядке, он делает то, что должен, но он был неправильно истолкован focus () return true/false на основе видимой функциональной клавиши и не устанавливает фокус на текстовое поле   -  person Marek Maszay    schedule 20.10.2016
comment
@NikolayTsonev LOL на самом деле это работает .. вау имя вместо пароля .. я думаю, что я тоже пробовал xD Спасибо и извините =)   -  person AboAlwi    schedule 20.10.2016
comment
@AboAlwi, не могли бы вы опубликовать это в качестве ответа здесь и принять его, чтобы другие знали, не читая эту ветку?   -  person TJ VanToll    schedule 21.10.2016


Ответы (1)


Благодаря Николаю Цоневу я просто сфокусировался не на том поле:

let password = <TextField>this.name.nativeElement;

должно быть:

let password = <TextField>this.password.nativeElement;

работает нормально, только что сделал глупую ошибку ...

person AboAlwi    schedule 22.10.2016