1

複数の角度プロジェクトがあり、各プロジェクトには同じ API を呼び出すサービスがあります。リクエストがどのアプリから送信されたかを判断するために、リクエストにヘッダーを追加しています。だから私はヘッダー値を設定するための基本サービスクラスを持つライブラリを作成しようとしています


    @Injectable({ providedIn: "root" })
    export class AppbaseService {
        scope: string; 
        constructor(@Inject(forwardRef(()=>'scope')) scope:string) { 
            this.scope = scope;
        }
        getScope():string{
            return this.scope;
        }
    }

そして、その動的な値をヘッダーとしてリクエストに追加するhttp インターセプター


    @Injectable()
    export class ScopeInterceptor implements HttpInterceptor {
    
        constructor(private appBaseService: AppbaseService) {
        }
    
        intercept(req: HttpRequest<any>,
            next: HttpHandler): Observable<HttpEvent<any>> {
    
            const clonedRequest = req.clone({
                headers: req.headers.append(
                    'Scope',
                    this.appBaseService.scope
                )
            });
            return next.handle(clonedRequest);
        }
    }

最後に、動的な値をプロバイダに設定するファクトリ


    export function appValueFactory(baseService: AppbaseService) {
        console.log(baseService);
        return baseService.getScope();
    }

しかし、モジュールでプロバイダーを設定する方法がわかりませんでした。これはあまり役に立ちません。


    Uncaught Error: Can't resolve all parameters for qI: (?).
        at Jt (main.js:1)
        at e._getDependenciesMetadata (main.js:1)
        at e._getFactoryMetadata (main.js:1)
        at e.getProviderMetadata (main.js:1)
        at main.js:1
        at Array.forEach (<anonymous>)
        at e._getProvidersMetadata (main.js:1)
        at main.js:1
        at Array.forEach (<anonymous>)
        at e._getProvidersMetadata (main.js:1)

誰かが私を正しい方向に向けることができますか?

ありがとうございました。

4

1 に答える 1