Ci siamo appena imbattuti nello stesso problema e la maggior parte delle risposte qui sembrano risolverlo solo per il routing interno angolare, e poi alcuni di essi per i parametri di percorso che non sono gli stessi dei parametri di richiesta.
Immagino di avere un caso d'uso simile alla domanda originale di Lars.
Per me il caso d'uso è ad esempio il monitoraggio dei referral:
Funzionamento angolare mycoolpage.com, con instradamento dell'hash, quindi mycoolpage.comreindirizza a mycoolpage.com/#/. Per il rinvio, tuttavia, mycoolpage.com?referrer=foodovrebbe essere utilizzabile anche un collegamento come quello . Sfortunatamente, Angular rimuove immediatamente i parametri della richiesta, andando direttamente a mycoolpage.com/#/.
Qualsiasi tipo di "trucco" con l'utilizzo di un componente vuoto + AuthGuard e ottenere queryParamso queryParamMap, sfortunatamente, non ha funzionato per me. Erano sempre vuoti.
La mia soluzione hacky è stata quella di gestirla in un piccolo script in index.htmlcui ottiene l'URL completo, con parametri di richiesta. Quindi ottengo il valore del parametro di richiesta tramite la manipolazione della stringa e lo imposto sull'oggetto finestra. Un servizio separato quindi gestisce l'ottenimento dell'ID dall'oggetto finestra.
script index.html
const paramIndex = window.location.href.indexOf('referrer=');
if (!window.myRef && paramIndex > 0) {
let param = window.location.href.substring(paramIndex);
param = param.split('&')[0];
param = param.substr(param.indexOf('=')+1);
window.myRef = param;
}
Servizio
declare var window: any;
@Injectable()
export class ReferrerService {
getReferrerId() {
if (window.myRef) {
return window.myRef;
}
return null;
}
}