如何将动态XHR内容动态导入到模板中?

2023-12-21

我使用以下代码获取仪表板 HTML 数据,该代码在单击按钮时执行:

fetchDashboard() {
    const requestOptions: Object = {
      headers: new HttpHeaders().append('Authorization', 'Bearer <tokenhere>'),
      responseType: 'text'
    }
    this.http.get<string>('http://localhost:3000/avior/dashboard',
        requestOptions)
            .subscribe(response => {
                   this.dashboardData = response;
            }
    );
}

我有多个组件设置我的视图,并且我想从头开始完全修改其中一个视图以包含获取的内容,我该怎么做?

按照推荐here https://stackoverflow.com/questions/31548311/angular-html-binding?rq=1我尝试使用<div [innerHtml]="dashboardData"></div>没有任何用处。


UPDATE

我的管理员 nav.ts 看起来像这样:

import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-avior-admin-nav',
  templateUrl: './avior-admin-nav.component.html',
  styleUrls: ['./avior.component.css']
})
export class AviorAdminNavComponent implements OnInit {

  dashboardData: string;


  constructor(private http: HttpClient) { }

  ngOnInit() {console.log('dashboardData: ', this.dashboardData);


  }
  fetchDashboard() {

    const requestOptions: object = {
      // tslint:disable-next-line: max-line-length
      headers: new HttpHeaders().append('Authorization', 'Bearer tokenhere'),
      responseType: 'text'
    };
    this.http.get<string>('http://localhost:3000/avior/dashboard',
        requestOptions)
            .subscribe(response => {
                   console.log(response);
                   this.dashboardData = response;
            }
    );
}

}

我的仪表板 component.ts 如下所示:

import { Component, OnInit, Input } from '@angular/core';
import { User } from '../models/user.model';

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

export class DashboardComponent implements OnInit {
  /* @Input() */ dashboardData: string;
  user: User;
  // dashboardData: string;
  constructor() { }

  ngOnInit() {
    console.log('dashboardData in dashboard comp: ', this.dashboardData);
  }

  canDeactivate(): Promise<any> | boolean {
    if (localStorage.getItem('currentUserToken') === 'token') {
            return (true);
          } else {
            return (false);
          }

}
}

我的仪表板组件 HTML 如下所示:

<p>
  Welcome and please replace me with dashboard text!
</p>
<div [innerHtml]="dashboardData"></div>
<div *ngIf="this.dashboardData" [innerHtml]="dashboardData">Test {{this.dashboardData}}</div>

我的管理导航 HTML 如下所示:

                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Administration
                    </a>
                    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <a class="dropdown-item" (click)=fetchDashboard()>Dashboard</a>
                        <a class="dropdown-item" [routerLink]="['/avior/users']">Users</a>
                        <a class="dropdown-item" [routerLink]="['/avior/workflows']">Workflows</a>
                        <div class="dropdown-divider"></div>
                        <a class="dropdown-item" [routerLink]="['/avior/system']">System</a>
                    </div>
                </li>

我的 avior.component.html 看起来像这样:

<div>
    <router-outlet></router-outlet>
</div>

我的 app.component.html 看起来像这样:

<!-- Navigation -->
<div class="navigation">
    <nav class="navbar navbar-expand-lg fixed-top navbar-dark bg-dark">

        <!-- Brand - Logo + Title -->
        <a class="navbar-brand">
            <img width="25" src="../assets/images/app_logo.jpg">
            <a class="navbar-brand" [routerLink]="['/avior/dashboard']">&nbsp;&nbsp;=== Application ===</a>
        </a>

        <!-- Menu -->
        <div class="collapse navbar-collapse" id="navbarSupportedContent">

            <!-- Menu left -->
            <ul class="navbar-nav mr-auto">

                <!-- Menu App -->
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Application
                    </a>
                    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <a class="dropdown-item" [routerLink]="['/carinae/list-content']">Mask 1</a>
                        <a class="dropdown-item" [routerLink]="['/carinae/tree-tab']">Mask 2</a>
                        <div class="dropdown-divider"></div>
                        <a class="dropdown-item" [routerLink]="['/carinae/app-settings']">App Settings</a>
                    </div>
                </li>

                <!-- Menu Admin-->
                <app-avior-admin-nav></app-avior-admin-nav>
            </ul>

            <!-- Menu right -->
            <app-avior-user-nav></app-avior-user-nav>
        </div>
    </nav>
</div>

<!-- Content / Output -->
<div class="content">
    <router-outlet></router-outlet>
</div>


如果请求的响应返回 HTML 作为字符串,您只需更正与模板的绑定即可。代替 :

<div [innerHtml]="this.dashboardData"></div>

by

<div [innerHTML]="dashboardData"></div>

如果您检查问题中提供的链接,HTML 中的绑定永远不会调用this关键词。

EDIT

现在代码已包含在内,您的 admin-nav 组件将获取仪表板数据,并将其存储在其仪表板数据成员中。但它从未传输到您的仪表板组件。现在 :

DashboardComponent.ts :取消注释 @Input()。

DashboardComponent.html:正确的 *ngIf="dashboardData"

Nav.html :添加一个<app-dashboard [dashboardData]="dashboardData"></app-dashboard>

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

如何将动态XHR内容动态导入到模板中? 的相关文章

随机推荐

  • 如何让 Javascript 等待所有图像加载后再继续?

    我对 Javascript 相当陌生 目前正在尝试以各种尺寸和位置显示图像 这意味着我必须先加载图像 然后才能访问宽度和高度等值 现在 这就是我面临问题的地方 我尝试依次加载图像 确保只有在完成一张图像后才会加载另一张图像 const a
  • 使用 QObject 代替容器

    读完有趣的亲子系统后QObject我想知道 Qt 开发人员使用它来代替更传统的容器有多常见 假设内存连续性不是必需的 这似乎提供了一些有趣的功能 例如 您可以有一个QObject并为其提供不同类型的子级 然后根据其类型轻松找到所有子级 从而
  • 如何构建boost静态库?

    这可行 但不会构建 boost 库的静态版本 也许我错了 bjam toolset gcc prefix C boost 1 49 0 mingw install 尝试发出以下命令 bjam toolset gcc prefix C boo
  • 在 post 请求中发送文件

    在 python 中 我发送这样的文件 with open D someimage jpg rb as image imager image read files image imager r requests post url files
  • AWS SAM - 模板没有任何连接到 Lambda 函数的 API

    因此 我尝试将现有的 Spring Boot 应用程序转换为 AWS lambda 并使用 SAM 我正在尝试使用 aws sam cli 在本地尝试我的 lambda 但是通过我的 SAM 设置 我得到 Template does not
  • 使用 printf 打印浮点数时额外的前导零?

    我希望能够编写一个如下所示的时间字符串 1 04 02 1 hours使用 printf 当我尝试写这样的东西时 printf d 02d 02 1f hours n 1 4 2 123456 I get 1 04 2 1 hours 是否
  • 在相同的 Javascript 上下文中创建带有附加 svelte 组件的窗口

    我使用 Sapper 框架 我想打开我自己的开发工具窗口 该窗口应该能够完全访问主窗口的 Javascript 对象 我正在尝试创建一个带有 svelte 组件和相同 Javascript 上下文的新窗口 var win window op
  • Django,UserChangeForm 错误

    我正在制作一个自定义用户表单 用户可以在其中更改一些详细信息 它有两个错误 但我无法理解问题所在 第一个问题是表单没有填写用户详细信息 这似乎是因为selfform初始化时为空 为什么 第二个问题是 当我提交此表单时 它会抱怨一些 KeyE
  • 在Eclipse中,如何运行修改上下文路径的Tomcat Maven插件

    在安装了 m2 Maven 插件的 Eclipse 中 我可以使用 Run on Server 命令通过 Eclipse WTP 在 Tomcat 中运行我的 web 应用程序 现在我想通过 Maven 修改上下文路径 所以我使用以下插件
  • params=True 的 Altair 回归变换:当有多个组时如何访问 r² 和 coeffs

    我在用transform regression在图表中创建回归线和相应的方程文本 对于单个回归 这工作得很好 但是对于 setgroupby something 选项 文本将绘制在彼此之上 我尝试使用构建字符串lineBreak n 但这没
  • Tomcat 7.0.73 不适用于 java 9

    由于 catalina sh 中的默认 java endorsed dirs 选项 无法使用 java 9 启动基于 tomcat 的应用程序 Djava endorsed dirs usr local share tomcat endor
  • MVC4 - 如何从剃刀视图调用控制器方法

    我是 MVC 新手 有人可以帮助我并解释如何从视图调用控制器方法吗 我有 HomeController 里面有 ShowFileContent 方法 HttpPost public ActionResult ShowFileContent
  • python:打开并读取包含德语变音符号的文件作为unicode

    我已经编写了程序来从文本文件中读取单词并将它们输入到 sqlite 数据库中并将它们视为字符串 但我需要输入一些包含德语变音符号的单词 这是一段准备好的代码 我都用 尝试过 编码 iso 8859 15 和 编码 utf 8 没有不同 co
  • PayPal 重定向到相同的弹出窗口

    我在我的网页中集成了 PayPal 的 Identity API 像往常一样 当用户点击时login with paypal JavaScript 按钮 https developer paypal com webapps develope
  • 替换 ASP.NET Core 中的 @helper

    到目前为止 我不认为ViewComponent解决了也没有解决的问题TagHelper 有什么替代品吗 接受参数并返回一个的东西HtmlString 我没有看到任何有害的东西 helper foo string something div
  • 在discord.py 中将引号作为参数传递时出现错误

    目前 当有人在命令中使用引号时 我的 Discord 机器人出现错误 我收到以下错误 discord ext commands errors ExpectedClosingQuoteError Expected closing 这似乎是一个
  • oracle sqlplus 包装结果

    当我运行如下查询时 SELECT FROM CAR 结果出现 但每行换行为几行 如何停止这种换行以使每一行显示在一行上 换了之后还是有同样的问题set lines到一个大数字 select from dba directories OWNE
  • 许多WordPress主题中奇怪的虚假social.png的目的是什么

    我从网站下载了一些 WordPress 主题 我注意到一个奇怪的包含social png文件 查看这个文件 这不是一个真正的 png 文件 而是一个 php 脚本 其中包含难以理解的混淆代码 并且对于从其他站点分发的许多 WordPress
  • 用于将大小转换为人类可读字符串的 ObjC/Cocoa 类?

    有没有一种简单的方法可以做类似的事情 NSMagicDataConverter humanStringWithBytes 20000000 哪个会返回 19 1MB 从 OS X 10 8 和 iOS 6 开始 您可以使用NSByteCou
  • 如何将动态XHR内容动态导入到模板中?

    我使用以下代码获取仪表板 HTML 数据 该代码在单击按钮时执行 fetchDashboard const requestOptions Object headers new HttpHeaders append Authorization