为什么文档为空?

2024-02-27

**更新**,使用接近工作的解决方案:

我试图让“跳到内容”链接跳转到“#content-start”之后的第一个可聚焦元素。

登录库.component.ts:

import { Component, OnInit } from '@angular/core';
import { Inject, Injectable } from '@angular/core';
import { DOCUMENT } from '@angular/platform-browser';

@Component({
    selector: 'app-login',
    templateUrl: './login.component.html',
    styleUrls: ['./login.component.scss']
})

export class BaseLoginComponent implements OnInit {

    constructor(
        @Inject(DOCUMENT) private document: any
        ) {
    }


    skip() {
        console.log(document);
        console.log(document.querySelector);
        var content = document.querySelector(`#content-start`); // ?? document is null!!
        if (content) {
            var control = content.querySelector('input, button, a');
            console.log(control);
            //if (control) {
            //    control.focus(); // first only
            //}
        }
    };

    ngOnInit() {
        this.document.getElementById('skipLink').onclick = this.skip;
        this.document.getElementById('skipLink').onkeypress = function (e) {
            if (e.keyCode == 13) {
                this.skip();
            }
        }

    }
}

登录.组件.html:

<div class="login-page">
    <section class="main container" id="content-start">
        <input type="text"/>

这实际上是有效的,因为控制台.log(控制) returns

<input _ngcontent-c4="" id="username" name="username">

这实际上是正确的控制。

但我不能只设置 .focus() 因为我拥有的是 HTML 片段,而不是具有方法的对象,例如 .focus();

呃,是否有 jQuery 的 $(control) 的角度等效项?


发生这种情况是因为 DOM 尚未加载ngOnInit。更新您的代码,使其看起来像这样,实施AfterViewInit:

export class AppComponent implements AfterViewInit{
constructor(
    @Inject(DOCUMENT) private document: any
) { }
}

ngAfterViewInit() {

    this.document.getElementById('skipLink').onclick = skipLink;
    this.document.getElementById('skipLink').onkeypress = function (e) {
        if (e.keyCode == 13) {
            skipLink();
        }
    }

    function skipLink() {
        let content: HTMLElement = this.document.querySelector("#content-start"); // ?? document is null!!
        if (content) {
            let control: HTMLElement = this.document.querySelector('input, button, a');
            console.log(control);
            if (control) {
                // control.focus(); // first only
            }
        }
    }
}

ngAfterViewInit确实如其听起来那样;它仅在视图最初加载后运行。

编辑以回应您的问题的编辑: 您正在寻找角元 https://docs.angularjs.org/api/ng/function/angular.element。有关这方面的文档非常有帮助,并且是在 Angular 中操作元素的更好的编程实践。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么文档为空? 的相关文章

随机推荐

  • Twitter Bootstrap Collapse 不执行任何操作

    我正在尝试使用 twitter bootstrap 网站上提供的示例来崩溃 当我尝试此代码时 单击链接折叠内容没有任何反应 这是我的代码
  • 推送到数组后,待办事项列表不会刷新

    每当我向数组添加待办事项时 它都不会在 html 中刷新 我需要什么来解决这个问题 另外 如何将循环创建的删除按钮连接到函数 const form document querySelector form const input docume
  • 从 crontab 运行存储过程

    我有布局 Mysql DB DB name db name DB User name user name Password 12345 Stored procedure my stored procedure 如何从 crontab 每天执
  • JavaScript 可以像 jQuery 一样使用 prevAll 吗?

    如何在 JavaScript 中实现这一点 function prevAll element some code to take all siblings before element return elements With previo
  • 如何以rails方式获取新创建记录的id?

    假设我有 2 个模型model1 and model2 model1有很多model2 model2 belongs to model1 Save model1 and model2同时 class Model1 lt ActiveReco
  • 从nodejs调用firebase云函数

    我想从另一个 NodeJS 服务器或只是一个 NodeJS 脚本调用 Firebase 的云函数 我的 firebase 函数是 onCall 函数 我在用https www npmjs com package firebase admin
  • Sprockets::FileNotFound 找不到类型为“text/css”的文件“bootstrap”

    这是当我尝试运行 Rails 服务器时在浏览器中遇到的错误 couldn t find file bootstrap with type text css 我的 gemfile 中有这个 gem bootstrap sass gt 3 3
  • 在 QtQuick 中应用 MVVM 模式

    我如何在 QtQuick 应用程序中应用 MVVM 模式 有人能给我任何示例 简单 代码吗 Thanks 使用 C ViewModel https bitbucket org AntyaDev qtquickmvvmexample over
  • 如何减少anaconda目录下的文件数量?

    我在计算集群上运行 conda 环境 其中每个 项目 的文件总数受到限制 最多 200k 个文件 我只创建了几个 conda 环境 anaconda for Python 2 7 每个环境中安装了约 200 个 python 和 R 包 环
  • 如何从 mp4 视频中删除或编辑 Exif?

    我用 Samsung Galaxy II 录制了一个全高清视频 当我将其上传到 YouTube 时 我发现它变成了 90 度 就像纵向布局 1080x1920 而不是 1920x1080 我找到了问题的原因 YouTube 正在读取视频元数
  • JNA 结构和指针映射

    如何将下面的函数映射到java VOID WriteToStruct BOOL 状态 STRUCT MSG RecBuff 这个函数的作用是 1 填充结构 RecBuff2 更新状态 如何映射到 Java 中的布尔指针并访问函数更新的结构数
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • Django 1.8 与 Postgres BDR 9.4.1 的迁移

    我正在尝试使用 BDR 在 Postgres 数据库上运行 Django 迁移 python manage py makemigrations 工作正常 但正在运行 python manage py migrate 结果出现以下错误 ALT
  • 从文本内容生成标签

    我很好奇是否存在一种算法 方法可以通过使用一些权重计算 出现率或其他工具从给定文本生成关键字 标签 此外 如果您为此指出任何基于 Python 的解决方案 库 我将不胜感激 Thanks 实现此目的的一种方法是提取文档中出现频率比您预期的偶
  • ionic - iPAD 中的下拉列表闪烁

    我的 Ionic 应用程序中的下拉列表在 iPAD 中闪烁 1 在下拉点击 2 如果点击外部下拉列表 3 如果点击下拉列表内 将再次显示图像 1 它在 iPhone 5s 上运行良好 但在 iPAD 中则不然 有什么解决方案或解决方法吗 E
  • 如何使用 Selenium 进行搜索、向下箭头并按 Enter 键

    我正在尝试搜索一家公司 在 inhersight com 上向下箭头并单击 Enter 我有以下代码 但它似乎不起作用 from selenium import webdriver from selenium webdriver commo
  • Flutter 可以高效地布局嵌套列表吗?

    这样的布局在 Flutter 中能否实现并高效渲染 Example 黄色和蓝色块都可以有大约 30 个元素 所以我想应该使用类似 ListView builder 的东西 我尝试过嵌套2个ListView builder 内部带有shrin
  • Knuth-Morris-Pratt 失效表

    我正在准备考试 正在研究 Knuth Morris Pratt 算法 考试内容是不及格表和 DFA 构建 我了解 DFA 构造 但我不太了解如何制作失败表 如果我有一个模式 abababc 的示例 如何从中构建失败表 解决办法是 失败表 0
  • 无法使用javascript下载大数据

    我在 javascript 中有大量 JSON 对象形式的数据 我已使用 JSON stringify 将其转换为字符串 现在我的用例是在文本文件中向用户提供这个大字符串 为此 我编写了下面的代码 HTML代码
  • 为什么文档为空?

    更新 使用接近工作的解决方案 我试图让 跳到内容 链接跳转到 content start 之后的第一个可聚焦元素 登录库 component ts import Component OnInit from angular core impo