在组件之间传递数据时令人困惑

时间:2019-04-07 10:29:55

标签: javascript angular angular6

我在angular 6中是新手,正在使用angular 6创建项目。在共享数据时遇到了问题。

这是我的代码:

1)组件侧边栏:

selectedCategory(type:any) {
    this.loginService.categoryType = type; // need to pass this data
}

2)List Comp:

export class ListPostsComponent implements OnInit {
    ngOnInit() {
        // here I need the data
    }
}

3)服务:

export class LoginService {
    categoryType:any;
}

1 个答案:

答案 0 :(得分:1)

在您的服务中,将const matrix = document.querySelector('.matrix'); katex.render("\\begin{Bmatrix}\n\n a & b \\\\\n\n c & d\n\n\\end{Bmatrix}", matrix, { throwOnError: false }); 设为categoryType,并在需要将数据传递到另一个组件时调用Subject

next()

现在,在组件侧边栏中,您需要注入服务@Injectable({ providedIn: 'root', }) export class LoginService { private categoryType: Subject<any> = new Subject<any>(); public categoryType$ = this.categoryType.asObservable(); public sendData(data: any){ this.categoryType.next(data); } } 并调用LoginService方法:

sendData

由于constructor(private loginService: LoginService ){ } selectedCategory(type:any) { this.loginService.sendData(type); } 既是观察者又是可观察者,因此您可以订阅主题并侦听希望接收数据的组件中的更改:

Subject

以下是Stackblitz中上述解决方案的有效示例:https://stackblitz.com/edit/angular-2sld4k?file=src%2Fapp%2Floginservice.service.ts