각도을 사용하여 관리자 패널을 작성하려고합니다. OOP 구조에 Angular 및 First Time을 사용하는 것은 이번이 처음입니다.각도 - 여러 구성 요소에 데이터 저장 및 사용
제품 유형을 선택하거나 클릭하여 모든 제품 유형을 나열하는 페이지가 있습니다. 해당 제품의 브랜드가있는 다른 페이지로 리디렉션합니다. 나는 여러 구성 요소에서 데이터를 공유하는 가장 좋은 방법이 무엇인지 확인하기 위해 인터넷을 검색 할 때
그래서, 나는 BehaviourSubject을 발견, 나는 성공적으로 brands
페이지로 products
페이지에서 사용자를 리디렉션을 관리했다. 브랜드 선택 후 사용자에게 brands
페이지의 새 페이지로 연결하려고했습니다.
지금까지의 한 변수를 사용하는 BehaviourSubject은 제품 페이지에서 하나의 제품을 선택하여 을 처리했습니다. 이제 사용자가 여러 브랜드를 선택할 수있는 옵션이 있습니다.
어떻게이 데이터를 다음 페이지로 전달할 수 있습니까? 그리고 브랜드를 선택할 때도 BehaviouSubject을 사용하여 나의 product
값에 계속 액세스 할 수 있습니까? 클래스를 만들고 클래스의 마지막 값을 업데이트하려고 생각했습니다. 불행히도 그렇게 할 수 없었습니다.
CODE
@Injectable()
export class UserActionService {
private product;
private currentProduct;
constructor() {
this.product = new BehaviorSubject<UserActions>(null);
this.currentProduct = this.product.asObservable();
}
changeProduct(product: UserActions) {
this.product.lastProduct.next(product);
}
}
export class UserActions {
private lastProduct: string;
private lastBrands: Array<string>;
}
이 코드는 tslint에 나에게 어떤 오류가 발생하지 않았지만, 브라우저에 나에게 오류 발생 :
Cannot read property 'next' of undefined
내가 알고하지 않습니다를 나는 옳은 일을하고있어, 어떤 도움을 많이 주시면 감사하겠습니다.
당신은 매개 변수, 로컬 스토리지, 또는 서버 측 스타일 세션 개념을 사용하여 직렬화 값으로 브랜드를 전달해야합니다. 왜? 사용자가 페이지를 새로 고침하면 어떻게 되나요? 또한 OOP와 관련이 없습니다. 또한'BehaviorSubject'와'Subject'의 차이는 전자가 초기 값을 가지기 때문에'new BehaviorSubject (null)'은 잘못되었습니다. –
나는이 모든 개념을 상당히 새로 도입했다. 사용자 행동을 저장하는 가장 좋은 방법이 아니라는 것을 말해 주려고 하는가? –
나는 그것이 당신이 달성하기를 원하는 것에 달려 있다고 말하고 있습니다. ~ 10 브랜드 만 말할 수 있다면, 경로 매개 변수로 선언 할 것입니다. 그렇게하면 응용 프로그램은 모든 컨텍스트에서 시작할 수 있으며 URL에 매개 변수가 있으면 관심있는 구성 요소와 서비스에서 해당 매개 변수를 검사하고 관련 데이터를로드 할 수 있습니다. –