相关疑难解决方法(0)

专注于新添加的输入元素

我有一个新的Angular 2应用程序,其中包含一个输入框列表.当用户点击返回键时,我会在他们当前正在编辑的输入框之后立即添加一个新输入框.或者更确切地说,我(异步)在模型中向数组添加一个新条目,这使得Angular 2在不久的将来自动生成一个新的输入框.

如何使输入焦点自动更改为新添加的元素?

[edit]或者,我得到了一个引起DOM生成的模型对象的引用.从组件代码中,有没有办法搜索表示特定模型对象的DOM元素?

[编辑]这是我的代码,使这项工作.希望这对一些Angular 2开发者来说足够冒犯以鼓励回复:-)

app.WordComponent = ng.core
    .Component({
        selector: 'word-editor',
        template:'<input type="text" [value]="word.word" (input)="word.update($event.target.value)" (keydown)="keydown($event)"/>',
        styles:[
            ''
        ],
        properties:[
            'list:list',
            'word:word'
        ]
    })
    .Class({
        constructor:[
            function() {
            }
        ],
        keydown:function(e) {
            if(e.which == 13) {
                var ul = e.target.parentNode.parentNode.parentNode;
                var childCount = ul.childNodes.length;

                this.list.addWord("").then(function(word) {
                    var interval = setInterval(function() {
                        if(childCount < ul.childNodes.length) {
                            ul.lastChild.querySelector('input').focus();
                            clearInterval(interval);
                        }
                    }, 1);
                });
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

angular

76
推荐指数
4
解决办法
9万
查看次数

将焦点移至键Enter上的下一个控件

我在Angular 1.x上找到了一些项目,用户可以通过按Enter键将焦点移动到下一个控件.

'use strict';
app.directive('setTabEnter', function () {

    var includeTags = ['INPUT', 'SELECT'];

    function link(scope, element, attrs) {
        element.on('keydown', function (e) {
            if (e.keyCode == 13 && includeTags.indexOf(e.target.tagName) != -1) {
                var focusable = element[0].querySelectorAll('input,select,button,textarea');
                var currentIndex = Array.prototype.indexOf.call(focusable, e.target)
                var nextIndex = currentIndex == focusable.length - 1 ? 0 : currentIndex + 1;

                if (nextIndex >= 0 && nextIndex < focusable.length)
                    focusable[nextIndex].focus();

                return false;
            }
        });
    }

    return {
        restrict: 'A',
        link: link
    };
});
Run Code Online (Sandbox Code Playgroud)

但这对Angular 2不起作用.如何在Angular 2中的Enter keypress上设置焦点到下一个控件?

html javascript typescript angular

9
推荐指数
2
解决办法
1万
查看次数

primeng:把重点放在控制上

抱歉这个菜鸟问题......

使用 primeng 包时,将焦点设置在控件上的推荐方法是什么?使用传统输入控件时,我设置一个表单变量 (#variable) 并使用 @ViewChild 获取对它的引用,以便我可以访问其本机元素:

this._variable.nativeElement.focus();
Run Code Online (Sandbox Code Playgroud)

当使用 primeng 的控件之一时,我怎样才能做同样的事情?

谢谢。

路易斯

primeng angular

7
推荐指数
1
解决办法
2万
查看次数

如何在angular2中为左右键添加事件?

我已经编写了如下所述的代码。到目前为止,仅在单击鼠标时选择列表项。即使按下键盘上的向上和向下箭头,我也想遍历列表。如何使用angular2实现此目的?

import { Component } from '@angular/core';

export class Hero {
name: string;
}

const HEROES: Hero[] = [
{ name: 'STWX1' },
{ name: 'STWX2' },
{ name: 'STWX3' },
{ name: 'STWX4' }
];

@Component({
selector: 'my-app',
template: `
    <div style="display: inline-block; width = 200px; ">
        <ul class="heroes">
            <li *ngFor="let hero of heroes" (click)="onSelect(hero)"
                [class.selected]="hero === selectedHero">
                 <p>{{hero.name}}</p>
            </li>
       </ul>
   </div>'
Run Code Online (Sandbox Code Playgroud)

,样式:[...]})

export class AppComponent  {
name = 'Angular1';
testRequestId = '3224';
heroes = HEROES;
selectedHero: Hero;

goToDivClick() …
Run Code Online (Sandbox Code Playgroud)

angular

6
推荐指数
1
解决办法
5351
查看次数

标签 统计

angular ×4

html ×1

javascript ×1

primeng ×1

typescript ×1