В вашем setRecipes значение, испускаемое вашим субъектом, является пустой переменной recipes массива, и ваш массив recipes никогда не изменяется.
Таким образом, getRecipes всегда будет возвращать пустой массив.
Это также немного странно, если вы выдаете список рецептов с темой, зачем вам метод getRecipes? Вы должны просто выдать список рецептов, переданный в функцию setRecipes
setRecipes(recipe: Recipe[]){
this.recipesChanged.next(recipe.slice());
}
и в вашем компоненте
ngOnInit() {
this.recipeService.recipesChanged
.subscribe(
(recipes: Recipe[]) => {
this.recipes = recipes;
}
);
}
Если вы используете sh, чтобы сохранить список рецептов в своей службе, тогда вы может сделать что-то вроде
@Injectable()
export class RecipeService{
recipesChanged = new BehaviourSubject(false);
private recipes:Recipe[]=[];
constructor(private slService:ShoppingListService){}
setRecipes(recipe: Recipe[]){
this.recipes = recipe;
this.recipesChanged.next(true);
}
getRecipes(){
return this.recipes.slice();
}
и в вашем компоненте
ngOnInit() {
this.recipeService.recipesChanged
.subscribe(
hasChanged => {
if (hasChanged)
this.recipes = this.recipeService.getRecipes();
}
);
}