javascript - 与其他组件共享组件数据

标签 javascript html angular typescript

我已关注this tutorial这非常有帮助,但似乎我仍然得到它,但我不明白我错过了什么!

当鼠标移到子组件(汉堡组件)中的列表上时,我希望文本动态显示在父组件(标题组件)上。

当我悬停时,它获取文本,它发出文本,但我无法将其发送到父容器!

下面是我的代码:

  • 来自 Burger-Component 的列表
    <li><a routerLink="/about" (mouseover)="getText($event)">about</a></li>
          <li><a routerLink="/what-to-expect"(mouseover)="getText($event)">what to expect</a></li>
          <li><a routerLink="/gallery"(mouseover)="getText($event)">gallery</a></li>
          <li><a routerLink="/activities"(mouseover)="getText($event)">activities</a></li>
          <li><a routerLink="/contact"(mouseover)="getText($event)">contact</a></li>

-ts 来自 Burger 组件

  ngOnInit() {
  	this.active = this.init || false;
  } 

  onBurgerClicked() {
    this.active = !this.active;
    this.opened.emit();
  }

  getText(event) {
    this.title = event.target.innerText;
    this.sendTitle.emit(this.title)
    console.log("title sent", this.title);
  }

-ts header 组件

  pageTitle: string;

  constructor() { }

  ngOnInit() {
  }

  getTitle($event) {
    console.log("title recieved");
  	this.pageTitle = $event;
  }

<app-header-component (sendTitle)="getTitle($event)"></app-header-component>

  • 项目中我的文件层次结构的图像 enter image description here

最佳答案

您绝对可以通过这个简短的 YouTube 视频中展示的一些方法来实现此目的:https://youtu.be/I317BhehZKM

您还应该真正考虑在此处使用字符串插值:

汉堡 html

<li><a routerLink="/about" (mouseover)="getText(about)">{{about}}</a></li>
<li><a routerLink="/what-to-expect"(mouseover)="getText(whatToExpect)">{{whatToExpect}}</a></li>
<li><a routerLink="/gallery"(mouseover)="getText(gallery)">{{gallery}}</a></li>
<li><a routerLink="/activities"(mouseover)="getText(activities)">{{activities}}</a></li>
<li><a routerLink="/contact"(mouseover)="getText(contact)">{{contact}}</a></li>

汉堡ts

//Add Output and Event Emitter to your imports
import { Component, OnInit, Output, EventEmitter  } from '@angular/core';

export class BurgerComponent implements OnInit {
  //Add these variables for your string interpolation and also make sure you have the output decorator and variable
  about: string = "About";
  whatToExpect: string = "What to Expect";
  gallery: string = "Gallery";
  activities: string = "Activities";
  contact: string = "Contact";
  @Output() burgerText = new EventEmitter<string>()


  ngOnInit() {
    this.active = this.init || false;
  } 

  onBurgerClicked() {
    this.active = !this.active;
    //this.opened.emit();
  }

  getText(text: string) {
    this.burgerText.emit(text);
    console.log("title sent", text);
  }

}

标题 html

<h5>{{pageTitle}}</h5>
<app-burger (burgerText)="getTitle($event)"></app-burger>

标题ts

  pageTitle: string;

  constructor() { }

  ngOnInit() {
  }

  getTitle($event) {
    console.log("title recieved: ", $event);
    this.pageTitle = $event;
  }

关于javascript - 与其他组件共享组件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135993/

相关文章:

asp.net - 何时在对 ASP.NET Web 服务 (ASMX) 的 JSON 请求中区分大小写很重要?

javascript - 视频+ Canvas 全屏问题

jquery - 如何使用 jQuery 拆分或迭代交错的纯文本和 HTML 内联标记?

javascript - jQuery e.preventDefault 仅在第一次单击时不起作用

html - h1 - h6 标签应该始终按顺序使用,还是数字是任意的?

asp.net - http.get 响应对象 - 无法访问 json()?

javascript - 将 $this 传递给函数

javascript - 将数据保存在构造函数中以供跨多个对象使用

javascript - 编写全局函数以在 Angular 所有组件中使用

Angular Material Chips 在 sidenav 中显示为矩形而不是圆形