angular - 如何将变量(HTTP 相关)从 1 个组件发送到 2 个组件
问题描述
public getCinemaById(id)
返回kin
,我希望这个常量导出到第二个组件
第一个组件
import { Component, OnInit } from '@angular/core';
import { ProgrammeService } from '../CinemaProgramme';
import { CinemaProgramme , Cinema , ProgrammeItems , Movie} from './interfaceCinemaProgramme';
@Component({
selector: 'app-cinema-programme',
templateUrl: './cinema-programme.component.html',
styleUrls: ['./cinema-programme.component.css']
})
export class CinemaProgrammeComponent implements OnInit {
kina: Cinema[];
selectedKinoId: '';
getCinemas(): void {
this.programmeService.getCinemas().
subscribe(kina => this.kina = kina);
}
public getCinemaById(id) {
for (const kin of this.kina) {
// tslint:disable-next-line: triple-equals
if (kin.id == id) {
return kin;
}
}
}
constructor(private programmeService: ProgrammeService) { }
ngOnInit() {
this.getCinemas();
}
}
第二部分
import { Component, OnInit } from '@angular/core';
import { ProgrammeService } from '../CinemaProgramme';
@Component({
selector: 'app-movie',
templateUrl: './movie.component.html',
styleUrls: ['./movie.component.css']
})
export class MovieComponent implements OnInit {
constructor(private programmeService: ProgrammeService) { }
ngOnInit() {
}
}
html 1 组件
<span *ngFor="let cos of kina" style="color:white;">{{ cos.id }}</span>
<form class="" >
<select name="cos" [(ngModel)]="selectedKinoId" searchable="Search here.." placeholder="Search..">
<option value="" disabled selected >Wybierz kino</option>
<option *ngFor="let kino of kina" [value]="kino.id"> {{ kino.name }} </option>
</select>
</form>
<div *ngIf="selectedKinoId" style="color:white; margin-left:12px;">
<div *ngFor="let kin of getCinemaById(selectedKinoId).cinemaProgramme.programmeItems">
<div class="img-repertuar">
</div>
<div class="one-repertuar">
<span [routerLink]="[kin.movie.id]" style="display:block; margin:3px; margin-top:10px;"><strong style="color:#e1cc89;"><legend>{{ kin.movie.title }}</legend></strong></span>
<span style="display:block; margin:3px; margin-top:20px; ">{{ kin.movie.description }}</span>
<span style="display:block; margin:3px; margin-top:110px; margin-left:-120px;">Czas:{{ kin.movie.length }}</span>
<span style="display:block; margin:3px; margin-top:10px;">Reżyseria: {{ kin.movie.director }}</span>
</div>
</div>
</div>
</div>
HTML 2 组件
<p style="color:white;">movie works!</p>
<span>
{{ kin.movie.title }} // I want here details selected movie
</span>
<router-outlet></router-outlet>
因此,当在组件 1 中单击电影的标题时,它会将我发送到包含我选择的同一部电影的详细信息的组件。此功能向我显示哪个 ID 具有给定曲目所在的电影院,其中包含我要发送到第二个组件以在 html 中引用 ngIF 的给定电影。怎么做 ?
解决方案
确保您RouterModule
在 module.ts 文件中导入。像这样设置路线:
const appRoutes: Routes = [
{ path: '/', component: CinemaProgrammeComponent },
{ path: 'movie/:id', component: MovieComponent }
然后它很简单:
import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';
@Component({...})
export class MyComponent implements OnInit {
constructor(private activatedRoute: ActivatedRoute) {}
ngOnInit() {
// Note: Below 'queryParams' can be replaced with 'params' depending on your requirements
this.activatedRoute.queryParams.subscribe(params => {
const userId = params['id'];
console.log(userId);
});
}
}
在你的第二个组件中从你的第一个组件中提取 id。
推荐阅读
- powershell - 如何将数据从通配符转换为字符串
- php - 为什么使用此端点进行身份验证时 Paypal API 突然停止工作?(svcs.paypal.com/Permissions/RequestPermissions)
- api - 如何将动态值传递给 GET API 请求?
- php - 使用 SAML2 与 Microsoft Azure Directory SSO 集成时,SimpleSAMLphp 显示找不到 saml2-acs.php(错误 404)
- hive - 如何将原始数据插入具有不同列序列的配置单元表中?
- javascript - 有没有办法检查是否有任何待处理的获取请求?
- java - 如果我省略 Java 的 volatile 关键字会怎样?
- javascript - MongoDb writeMany 或 None
- flutter - 如何在飞镖中公开全局枚举?
- excel - Excel VBA 自定义函数帮助对话框